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

逛奔的蝸牛

我不聰明,但我會很努力

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

當你想使用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://www.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>
            国产欧美日韩伦理| 欧美日韩国产不卡| 国产亚洲一区在线| 久久国产综合精品| 欧美制服第一页| 在线成人中文字幕| 亚洲国产小视频在线观看| 欧美激情 亚洲a∨综合| 亚洲一区中文| 久久精品三级| av成人免费| 亚洲欧美日韩国产| 在线观看精品视频| 亚洲精品免费看| 国产欧美日韩精品丝袜高跟鞋| 久久人人九九| 欧美国产一区视频在线观看| 亚洲一线二线三线久久久| 欧美在线一二三四区| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲欧洲免费视频| 亚洲欧洲日韩在线| 国产乱码精品一区二区三区不卡| 久久久久综合网| 欧美久久电影| 久久免费高清视频| 欧美日韩综合视频网址| 久久久久免费| 欧美日韩国产成人在线91| 久久国产婷婷国产香蕉| 欧美精品久久99久久在免费线| 欧美一区不卡| 欧美日韩国产精品专区| 葵司免费一区二区三区四区五区| 欧美日韩国产精品| 美女91精品| 国产精品腿扒开做爽爽爽挤奶网站 | 欧美日韩一区免费| 麻豆av一区二区三区久久| 欧美视频日韩视频| 亚洲国产高清高潮精品美女| 国产在线精品自拍| 亚洲视频第一页| 日韩一级在线观看| 久久亚洲综合| 久久久久久久久综合| 国产精品草草| 日韩亚洲国产精品| 亚洲黄色在线观看| 美女精品网站| 免费看av成人| 亚洲电影免费在线 | 亚洲第一区中文99精品| 国内精品久久久久伊人av| 亚洲伊人第一页| 亚洲一区二区毛片| 欧美日韩国产999| 亚洲精品乱码视频| 99xxxx成人网| 欧美日韩成人在线视频| 亚洲激情女人| 99在线|亚洲一区二区| 欧美寡妇偷汉性猛交| 亚洲国产欧美一区二区三区久久| 亚洲电影观看| 欧美激情精品久久久久久黑人| 欧美第十八页| 99国产麻豆精品| 欧美视频日韩视频| 亚洲视频免费观看| 欧美在线视频二区| 国产综合自拍| 麻豆精品精品国产自在97香蕉| 欧美成人亚洲成人日韩成人| 亚洲国产精品99久久久久久久久| 裸体素人女欧美日韩| 亚洲福利精品| 这里是久久伊人| 国产精品普通话对白| 性欧美1819性猛交| 免费成人av在线看| 亚洲免费观看高清完整版在线观看熊 | 久久在线免费视频| 亚洲人成网站在线观看播放| 欧美日韩高清在线观看| 亚洲一区二区三区乱码aⅴ| 久久狠狠亚洲综合| 亚洲国产精品专区久久| 欧美日韩精品二区| 亚洲欧美视频一区二区三区| 麻豆精品视频在线观看| 亚洲精品午夜| 国产欧美日韩不卡| 免费成人性网站| 9人人澡人人爽人人精品| 香蕉亚洲视频| 亚洲国产另类久久精品| 国产精品护士白丝一区av| 久久av在线看| 日韩亚洲视频在线| 老司机一区二区三区| 99精品国产在热久久婷婷| 国产乱码精品一区二区三区忘忧草| 久久久噜噜噜久久人人看| 99精品国产高清一区二区| 久久人人97超碰精品888| 一区二区三区久久网| 国内精品久久国产| 国产精品久久久久久久app| 久久综合亚州| 午夜视黄欧洲亚洲| 91久久国产精品91久久性色| 久久激情视频| 亚洲欧美成人在线| 亚洲精品综合久久中文字幕| 国户精品久久久久久久久久久不卡| 欧美日韩福利| 免费在线观看日韩欧美| 欧美在线视频观看| 亚洲四色影视在线观看| 91久久夜色精品国产网站| 麻豆成人在线播放| 亚洲欧美日韩另类精品一区二区三区| 亚洲国产欧美一区二区三区久久| 国产欧美视频一区二区三区| 欧美精品尤物在线| 久色成人在线| 久久亚洲精品伦理| 久久国产精品99精品国产| 亚洲欧美激情精品一区二区| 一本色道88久久加勒比精品| 亚洲茄子视频| 亚洲国产日日夜夜| 欧美激情久久久久| 欧美激情国产日韩| 女生裸体视频一区二区三区| 久久免费的精品国产v∧| 久久久久久久综合狠狠综合| 久久国产精彩视频| 久久av资源网| 久久免费视频在线| 久久久久久久久久久成人| 久久精品亚洲一区二区| 午夜久久久久久久久久一区二区| 亚洲伊人网站| 欧美一区二区高清在线观看| 欧美一区亚洲| 久久久最新网址| 蜜桃av一区二区在线观看| 蜜臀av在线播放一区二区三区| 久久综合久久88| 麻豆freexxxx性91精品| 亚洲国产精品v| 亚洲精品在线观| 亚洲天堂av高清| 久久成人免费视频| 美女日韩欧美| 欧美另类专区| 国产精品嫩草影院av蜜臀| 国产日韩在线视频| 亚洲国产福利在线| 在线一区二区三区做爰视频网站| 亚洲欧美bt| 美女免费视频一区| 亚洲伦伦在线| 欧美一区二区福利在线| 久久性天堂网| 久久综合中文字幕| 亚洲人成毛片在线播放| 亚洲激情偷拍| 亚洲永久在线| 另类天堂av| 99精品热6080yy久久| 亚洲伊人第一页| 美女精品网站| 国产伦精品一区二区三区在线观看| 国内精品久久久久伊人av| 99精品欧美一区二区蜜桃免费| 午夜欧美不卡精品aaaaa| 欧美 日韩 国产一区二区在线视频 | 欧美一区二区| 欧美激情1区2区| 日韩视频免费| 欧美在线观看www| 欧美风情在线| 激情一区二区| 午夜在线视频观看日韩17c| 免费久久99精品国产| 欧美激情综合五月色丁香| 国产农村妇女精品一二区| 亚洲大胆人体视频| 亚洲午夜视频| 亚洲国产精品一区制服丝袜| 亚洲网址在线| 免费成人高清| 国产欧美一区二区精品性| 亚洲精品自在在线观看| 久久精品视频亚洲| 99成人精品| 欧美aaa级|