青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::

當你想使用Cocoa的集合來存儲非對象型數據時,NSValue和NSNumber是非常有用的。NSNumber是NSValue的子類,所以 NSValue更靈活一些。
我們先看看NSValue能做什么:

                 一個NSValue對 象是用來存儲一個C或者Objective-C數據的簡單容器。它可以保存任意類型的數據,比如int,float,char,當然也可以是指pointers, structures, and object ids。NSValue類的目標就是允許以上數據類型的數據結構能夠被添加到集合里,例如那些需要其元素是對象的數據結構,如NSArray或者NSSet 的實例。需要注意的是NSValue對象一直是不可枚舉的。

所以下面的代碼是可行的:

 
            // assume ImaginaryNumber defined:
            typedef struct {
            float real;
            float imaginary;
            } ImaginaryNumber;
             
            ImaginaryNumber miNumber;
            miNumber.real = 1.1;
            miNumber.imaginary = 1.41;
             
            NSValue *miValue = [NSValue value:miNumber
            withObjCType:@encode(ImaginaryNumber)]; // encode using the type name
             
            ImaginaryNumber miNumber2;
            [miValue getValue:&miNumber2];
             



是不是影像很深刻呢?然而不管怎樣,蘋果的文檔里有一 行看起來有點含混的解釋:

時刻記住你的struct類型必須是定長的。你不可以存儲C字符串,不定長數組和結構和其他的一些不定長 的數據類型到NSValue中去。你應該使用NSString或者NSData來存儲此類不定長數據。當然你可以把一個指向變長對象的指針存儲在 NSValue對象中。

這是什么意思呢?如果你的數據不是定長的會發生什么?它能被正確的存儲下來嗎?

 
            typedef struct {
            int dataSize;
            char *data;
            int year;
            } myStructType1;
             


當data指向一個字符數組時,它能被正確的編碼嗎?
回 答是很簡單的,它是變長的,所以它指向的數據不會被編碼。
只有這個指針地址被編碼了。所以,如果你有一個服務線程編碼了一個 myStructTyle1的數據發布出去,并釋放了這快內存,那么客戶線程拿到這個數據解碼并試圖獲取data的原始數據時,那就只能得到data的指 針地址,而不是數據內容。所以不要期望它能存儲你的data。你應該使用NSData或者NSArchiver來代替NSValue以達到期望目標。

我 們再看這個例子:

 
            typedef struct {
            int age;
            int month;
            int day;
            } innerType;
             
            typedef struct {
            int dataSize;
            innerType *innerData;
            } myStructType2;
             


恩,innerTyle是一個定長的類型變量,那么它會被正確 編碼嗎?
不會,蘋果的文檔并沒有說明此類情況。它依然只編碼指針而不是內容。
所以在這種情況下,依然得使用NSData。
總結, 使用NSValue只能是對那些沒有變量是指針的struct。
Then how the NSValue stores? It is kind of shallow copy. Please read this.
Here the address of myCString is passed (&myCString), so the address of the first character of the string is stored in theValue. Note that the NSValue object doesn’t copy the contents of the string, but the pointer itself. If you create an NSValue object with an allocated data item, don’t deallocate its memory while the NSValue object exists.

=============================== 我是引用分割線=================

不管是NSValue還是NSData,都是可以對非對象進行編碼存儲的。但在我的工 程里,線程之間通信的數據是需要進行序列化的,我使用了NSKeyedArchiver來序列化。
在使用過程中發現NSValue存儲的數據不可 被序列化,而NSData可以。我的struct是定長的。

所以最好包裝時都使用NSData吧,如果時rect, point之類的倒是可以用NSvalue,它已經提供好接口供你使用了。


用NSValue試了半天.保存CGSize不行.
后來改用NSData好了..
復制代碼
  1. UIImage *currentImg = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",i]];
  2.         CGSize imageSize = currentImg.size;            
  3.         NSData *pointObjectIn = [NSData dataWithBytes:&imageSize length:sizeof(CGSize)];
  4.         [persistentArray addObject:pointObjectIn];        


復制代碼
  1. NSData* getImgeData = [arrayImageCGSize objectAtIndex:i] ;
  2.         CGSize imageSize = *(CGSize*)[getImgeData bytes];

From: http://www.cocoachina.com/bbs/read.php?tid-13738.html

@import url(http://m.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
posted on 2011-12-09 03:53 逛奔的蝸牛 閱讀(642) 評論(0)  編輯 收藏 引用 所屬分類: Cocoa
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美亚洲在线观看| 国产精品素人视频| 99成人在线| 亚洲精品老司机| 亚洲电影av在线| 亚洲精华国产欧美| 亚洲国内高清视频| 亚洲精品少妇30p| 日韩亚洲欧美高清| 亚洲女同在线| 久久免费高清视频| 欧美日韩国产三区| 国产精品爽爽爽| 亚洲福利精品| 亚洲欧美日韩系列| 女主播福利一区| 99国产精品国产精品久久| 亚洲永久免费观看| 久久人体大胆视频| 欧美伦理91i| 国产一区二区三区高清| 亚洲精品视频在线看| 性欧美大战久久久久久久久| 麻豆国产精品一区二区三区 | 久久婷婷麻豆| 亚洲黄色一区二区三区| 亚洲欧美一区二区精品久久久| 久久精品导航| 欧美三级电影精品| 亚洲日本va午夜在线电影| 欧美一区不卡| 亚洲精品自在久久| 另类av导航| 国产在线观看一区| 亚洲午夜精品一区二区| 欧美一区在线看| 亚洲激情一区二区三区| 亚洲欧美激情一区二区| 欧美bbbxxxxx| 国产欧美日韩免费| 日韩视频―中文字幕| 久久影院午夜片一区| 亚洲天堂网在线观看| 欧美福利视频在线| 一区二区在线观看av| 亚洲免费影视| 亚洲激情婷婷| 久久青草欧美一区二区三区| 国产九九精品视频| 亚洲在线观看视频网站| 亚洲区免费影片| 麻豆久久婷婷| 狠狠噜噜久久| 久久久久成人精品| 午夜老司机精品| 国产精品永久免费视频| 亚洲综合成人在线| 中文亚洲免费| 欧美视频免费看| 9色精品在线| 亚洲日本久久| 欧美日韩不卡在线| 99riav久久精品riav| 亚洲国产精品99久久久久久久久| 午夜久久久久久久久久一区二区| 国产精品毛片大码女人| 亚洲欧美成人一区二区三区| 一个色综合导航| 国产精品久久久久久久久动漫 | 性xx色xx综合久久久xx| 99re亚洲国产精品| 欧美日韩999| 亚洲天堂成人| 亚洲一区二区动漫| 国产精品一区二区你懂的| 香蕉久久国产| 欧美亚洲视频在线看网址| 国产一区二区久久精品| 美女视频黄a大片欧美| 老司机成人网| 99av国产精品欲麻豆| 99亚洲一区二区| 国产精品天美传媒入口| 久久婷婷久久| 欧美激情五月| 午夜精品福利一区二区三区av | 亚洲欧美日韩精品久久奇米色影视| 国产精品久久久久久久久婷婷| 性刺激综合网| 六十路精品视频| 亚洲免费视频观看| 久久久999精品| 日韩午夜精品视频| 欧美在线观看视频一区二区三区| 亚洲男人的天堂在线| 午夜精品久久久久久99热软件| 国模私拍视频一区| 亚洲三级免费| 国产午夜精品视频| 欧美福利视频一区| 国产精品theporn| 久久久久久夜精品精品免费| 欧美成人精品在线视频| 午夜久久久久久| 欧美va亚洲va国产综合| 亚洲专区国产精品| 麻豆成人在线观看| 亚洲欧美日韩在线播放| 久久伊人免费视频| 午夜精品美女自拍福到在线 | 亚洲精品国产精品乱码不99按摩 | 久久综合免费视频影院| 欧美精品国产精品日韩精品| 久久久国产一区二区| 欧美日韩免费一区二区三区| 蜜臀久久99精品久久久画质超高清 | 夜夜精品视频一区二区| 一区二区视频欧美| 亚洲一区二区日本| 亚洲精品在线免费| 久久久久久一区二区| 欧美一级淫片播放口| 欧美日韩精品一区二区在线播放| 老鸭窝亚洲一区二区三区| 国产精品三级视频| 亚洲精品一区二区三区福利 | 欧美一区二区三区日韩| 欧美激情在线免费观看| 免费看的黄色欧美网站| 国内伊人久久久久久网站视频| 亚洲综合二区| 99热免费精品| 欧美人成网站| 99国产精品视频免费观看一公开| 亚洲精品久久久蜜桃| 男女激情久久| 91久久在线视频| 99视频精品免费观看| 欧美精品国产精品| a4yy欧美一区二区三区| 亚洲一区二区成人| 欧美吻胸吃奶大尺度电影| 亚洲人体影院| 亚洲一区二区三| 国产精品你懂的在线欣赏| 亚洲性色视频| 久久久国产精彩视频美女艺术照福利| 国产性色一区二区| 久久久亚洲国产天美传媒修理工 | 久久综合色播五月| 国产香蕉97碰碰久久人人| 亚洲已满18点击进入久久| 先锋资源久久| 国产午夜亚洲精品羞羞网站 | 国产精品电影观看| 亚洲一二三区精品| 欧美综合国产| 狠狠色2019综合网| 欧美黑人多人双交| 99re热精品| 欧美在线观看一区二区三区| 国产一区二区三区高清播放| 久久精品人人做人人爽电影蜜月| 欧美成人一区二区三区| 亚洲欧洲日韩女同| 欧美日韩视频在线| 欧美一区激情视频在线观看| 欧美xart系列高清| 亚洲一区在线免费观看| 国产三级精品三级| 欧美国产一区视频在线观看| 亚洲一区二区三区视频| 欧美国产专区| 欧美亚洲日本一区| 亚洲黄一区二区三区| 国产精品美女xx| 女人天堂亚洲aⅴ在线观看| 亚洲性感激情| 欧美国产高潮xxxx1819| 性欧美办公室18xxxxhd| 亚洲人成7777| 国产主播一区二区三区四区| 欧美日本久久| 久久噜噜噜精品国产亚洲综合| 一区二区国产日产| 欧美国产成人精品| 久久久亚洲国产美女国产盗摄| 一本色道久久88综合日韩精品 | 欧美激情免费观看| 性色av一区二区怡红| 亚洲精品美女久久久久| 久久一综合视频| 午夜伦理片一区| 99re6热只有精品免费观看| 国产偷久久久精品专区| 欧美日韩一区综合| 欧美精品情趣视频| 欧美.日韩.国产.一区.二区| 久久久www成人免费精品| 一区二区三区国产在线观看|