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

逛奔的蝸牛

我不聰明,但我會很努力

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

當你想使用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| 久久精品免费| 欧美日韩一级片在线观看| 国产视频精品网| 91久久精品国产91性色tv| 亚洲一级在线| 久久综合狠狠综合久久激情| 亚洲日本欧美在线| 欧美在线一级va免费观看| 欧美成人一品| 国产一区二区三区高清播放| 亚洲精品永久免费| 久久免费视频一区| 一区二区成人精品| 久久久999| 国产精品高潮视频| 亚洲乱码日产精品bd| 久久亚洲精品欧美| 亚洲一区二区三区三| 欧美大片免费观看| 韩国精品久久久999| 亚洲你懂的在线视频| 亚洲激情在线视频| 久久综合给合| 国内精品久久久| 亚洲欧美日韩综合| 91久久国产综合久久91精品网站| 欧美在线首页| 国产欧美一区视频| 亚久久调教视频| 一本色道久久综合亚洲精品高清 | 国产视频在线观看一区| 99av国产精品欲麻豆| 欧美激情精品久久久久久大尺度| 午夜影院日韩| 国产欧美亚洲日本| 欧美在线关看| 香蕉av777xxx色综合一区| 国产精品久久久久久久久久尿| 日韩视频―中文字幕| 亚洲激情精品| 欧美日韩精品一区二区在线播放 | 久久精品91久久久久久再现| 亚洲精品一二区| 久久躁狠狠躁夜夜爽| 国内精品久久久| 久久人91精品久久久久久不卡| 午夜视频在线观看一区| 国产欧美精品| 久久久久久久999| 久久精品成人一区二区三区| 国产一区再线| 欧美 日韩 国产 一区| 久久综合色88| 亚洲乱码日产精品bd| 亚洲人精品午夜| 欧美日韩精品一区二区天天拍小说| 一区二区三区高清在线| 中文精品视频| 国产一区二区三区四区老人| 久久综合伊人77777尤物| 老牛国产精品一区的观看方式| 91久久中文字幕| 亚洲免费观看高清完整版在线观看熊 | 久久婷婷国产综合精品青草| 久久久www成人免费精品| 亚洲福利免费| 亚洲精品一区二区三区樱花 | 欧美黄色视屏| 欧美日韩美女在线| 欧美专区18| 噜噜噜噜噜久久久久久91| 亚洲精品欧美精品| 亚洲女同性videos| 亚洲高清视频在线| 一本久道久久久| 国产在线观看精品一区二区三区| 女人天堂亚洲aⅴ在线观看| 欧美日韩在线播放一区二区| 久久久久久亚洲精品杨幂换脸| 另类亚洲自拍| 亚洲欧美国产精品专区久久| 久久综合九色九九| 亚洲女优在线| 欧美激情第8页| 久久精品二区| 欧美视频在线观看免费| 你懂的网址国产 欧美| 国产精品黄页免费高清在线观看| 蜜臀av在线播放一区二区三区| 欧美午夜精品一区| 欧美激情无毛| 狠狠色狠狠色综合日日91app| 欧美一区二区性| 麻豆精品91| 国产精品嫩草久久久久| 免费黄网站欧美| 国产精品久久国产精麻豆99网站| 美脚丝袜一区二区三区在线观看 | 噜噜噜噜噜久久久久久91| 午夜一区二区三区在线观看| 美女国内精品自产拍在线播放| 久久国产精品亚洲77777| 欧美日韩国产小视频| 农夫在线精品视频免费观看| 国产日本欧美一区二区三区| 夜夜狂射影院欧美极品| 日韩午夜在线播放| 久久视频精品在线| 欧美中文日韩| 国产精品海角社区在线观看| 亚洲精品欧美专区| 亚洲精品综合| 欧美高潮视频| 欧美国产一区二区在线观看 | 亚洲国内高清视频| 亚洲高清资源综合久久精品| 久久国产精品99国产| 久久精品亚洲乱码伦伦中文 | 亚洲电影免费| 久久先锋影音av| 麻豆久久精品| 伊人成人开心激情综合网| 久久久久久亚洲综合影院红桃| 久久免费黄色| 亚洲国产欧美国产综合一区| 免费高清在线视频一区·| 亚洲国产日韩一级| 亚洲天堂成人| 国产九九精品| 久久久99爱| 亚洲国产激情| 中文在线不卡视频| 国产欧美日韩免费| 久久久久国产精品厨房| 欧美激情 亚洲a∨综合| 99国产精品久久久久老师| 国产精品国产一区二区| 欧美在现视频| 亚洲国产精品久久| 亚洲制服av| 精品成人国产在线观看男人呻吟| 久热精品视频在线观看一区| 亚洲精品孕妇| 久久久久久久网| 亚洲裸体在线观看| 国产精品私房写真福利视频| 欧美一区二区视频97| 亚洲二区视频在线| 亚洲欧美日韩国产| 在线观看91精品国产麻豆| 欧美人与性禽动交情品| 欧美亚洲综合另类| 欧美成人一二三| 最新国产乱人伦偷精品免费网站| 亚洲视频一二三| 韩国av一区二区三区四区| 欧美刺激性大交免费视频| 亚洲一级高清| 亚洲国产日韩欧美在线动漫| 欧美一乱一性一交一视频| 亚洲欧洲三级| 国产日韩三区| 欧美另类在线观看| 久久激情久久| 中文在线资源观看网站视频免费不卡 | 在线一区视频| 蜜月aⅴ免费一区二区三区 | 亚洲国产成人精品久久| 香蕉久久精品日日躁夜夜躁| 91久久精品美女| 国产三级精品三级| 欧美日韩久久久久久| 久热国产精品视频| 欧美伊人影院| 午夜国产欧美理论在线播放| 亚洲理论在线| 亚洲国产精品va在看黑人| 久久久亚洲成人| 欧美呦呦网站| 亚洲一区欧美激情| 这里只有精品丝袜| 99精品视频一区二区三区| 在线免费高清一区二区三区| 国产午夜精品一区二区三区欧美| 欧美日韩免费高清| 欧美国产综合视频| 免费国产一区二区| 久久久蜜桃精品| 久久激情视频免费观看|