NSValue的个人想法

通过下面的代码,又可以将NSValue转换成CGRect,CGPoint等类型的数值。

CGRect imageRect = [[self.lockImageRectArray objectAtIndex:l] CGRectValue];

通过NSValue就可以实现CGxxx类型的数值存储在NSMutable,NSDictionary类型的数组中。

@interface NSValue (NSValueUIGeometryExtensions)

+ (NSValue *)valueWithCGPoint:(CGPoint)point;

+ (NSValue *)valueWithCGSize:(CGSize)size;

+ (NSValue *)valueWithCGRect:(CGRect)rect;

+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform;

+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets;

+ (NSValue *)valueWithUIOffset:(UIOffset)insets __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);

- (CGPoint)CGPointValue;

- (CGSize)CGSizeValue;

- (CGRect)CGRectValue;

- (CGAffineTransform)CGAffineTransformValue;

- (UIEdgeInsets)UIEdgeInsetsValue;

- (UIOffset)UIOffsetValue __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);

@end

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"lockButton.png"]];

imageView.frame = CGRectMake(10 * (l + 1) + imageView.frame.size.width * l, 120 +  50 * r, imageView.frame.size.width, imageView.frame.size.height);

[self.lockImageRectArray addObject:[NSValue valueWithCGRect:imageView.frame]];

[self addSubview:imageView];

因为CGRect,CGPoint等不是NSObject的子类,因此不能够直接添加到NSMutableArray中,所以要先将其转换成NSObject的子类。NSValue类可以解决这个问题,见NSValue类的声明:

感觉CGRect,CGPoint 没有从NSObject继承,是不是一种缺陷呢。nsvalue 起到的作用,就是一个在其它的面向对象语言中的object类型的壳子。

时间: 2024-08-10 18:09:41

NSValue的个人想法的相关文章

一个配置表优化的想法

今天下班在班车上想了一个关于配置表存储的小优化,起因是早上的时候发现了一个bug,这个bug是由于在运行时动态更改了一个列表配置导致的. 其实关于这种运行时"偷偷"改配置的问题我之前也有考虑过,这种应该是一不小心就会写出的,这不终于都出了一个. 至于如何预防这种问题,我认为在python里面似乎也没有什么好的解决方法,因为它不像c++有const语义,但有一个稍尽人事的预防措施就是把列表型的配置读成元组(tuple).而由此衍生出的一个想法便是:把配置表中所有的列表型配置都读成共享的元

看死亡笔记后的想法(一)

最近在看Death Note,特别是逮捕火口的前后几集,很精彩,也有了自己的一些看法. 逮捕火口之前,八人会议中的三位高管聚到一起商议,他们八人中到底谁是基拉,他们都认为是火口,看来公司高管没有一个是简单的呢 他们认为是火口的原因之一是他看起来对名利毫不在意,我的想法是 一个人表现出对什么东西越是装作不在意,就可能越是在意. 对一些东西,比如钱,或者地位,大家都想要的东西,某个人对它并不在意,这是否如他所说,就值得怀疑 并且,如果这个人的身份跟他的话矛盾,比如是公司高管,但天天说自己不在意地位和

只想把技术做好,维持一份可观的收入,就精专一门;有创业想法,就全栈

做全栈开发(前端和后端)好还是全端开发(前端和Android应用开发)好?哪个前景和钱景发现比较好,对以后的发展! 1. 有创业想法,就全栈.只想把技术做好,维持一份可观的收入,就精专一门 2. 全栈对自己的优势不大吗?好多公司都不认同,特别是HR,普遍的观点是,会的多,就很难专精. 3. 大公司是一个靠分工增加工作效率的机构,无论你全栈,还是全端,对公司来说都只用你的一部分技能.但是薪资可是要比一般的人高一些,所以很多HR都忽悠你说全会的就没法专精.先全栈,后全端.别信那些HR忽悠. 4. 有

企业怎样玩转10亿网民?田溯宁有不一样的想法!

京东商城创始人刘强东在中美互联网论坛上表示,中国是世界上最大的互联网市场,未来十年中国网民将超10亿.阿里巴巴创始人马云谈到当前中国传统企业经营压力增大,但更应该看到新经济增长的势头不亚于美国,中国市场潜力巨大.联想CEO杨元庆则提到,现在是一个资源全球配置的时代. 面对一个拥有全球最大网民规模.员工数量动辄上万的企业规模.全球化资源配置以及新经济增长模式层出不穷的转型时代,传统企业究竟要如何实现互联网+.如何玩转即将出现的10亿网民所带来的数据红利和网民人口红利?被誉为中国"互联网建筑师&qu

有个想法,想吧LNMP和NGINX和HAPROXY都放到docker里做集群,大家觉得怎么样?

有个想法,想把LNMP和NGINX和HAPROXY都放到docker里做集群 顶层HAPROXY+KERPALIVE 第二层NGINX+KERPALIVE 第三层APACHE集群+MYSQL集群 第四层docker 第五层LINUX内核 有想法的可以一起讨论下哈

NOSDK--关于android一键打包及统一接入国内多个平台SDK的想法与实现(前言)

前言 一,一键打包的实现 1.1 shell文件介绍 1.2 自动刷新mk文件 1.3 自动拷贝资源 1.4 使用ant实现打包 1.5 拷贝icon 二,统一接入多个平台 1.1 nosdk框架介绍 1.2 nosdk_library基本库介绍 1.3 游戏逻辑与sdk平台的分离 1.4 xx平台接入示例 三,后记 做SDK平台接入工作已经有一年多了,自认对于大多平台的sdk都基本熟悉了,因此计划写一个系列的文章,介绍自己对于一键打包及统一接入多个平台sdk的一些想法与实现,算是对于这一年多的

[待完善]关于辛普森公式的一点想法

[吐槽] 嗯一开始接触到这个东西其实是因为某道凸包的题目好像可以用这个奇妙的方法来算 但其实了解也不是很深,只是觉得这个东西十分有意思, 所以先稍微写一下自己的想法,了解更多之后慢慢完善 [正题] 首先这个公式是长这样的: 取一个二次函数上(嗯..貌似是这样的)的一段区间,左端点为$(l, hl)$,右端点为$(r, hr)$,中间的那个点为$(\frac{r-l}{2}, hmid)$ 那么,这段的积分可以表示为: $\frac{(r-l)*(hl+4*hmid+hr)}{6}$ 但是这样往往

记录下我曾经那些认为的小想法

每隔一段时间,脑袋瓜子就会冒出一些自认为是小想法. 这篇文章就记录下我以前的一些小想法以及以后的小想法,一种想记录下来,一直也没有机会和时间.直到现在一琢磨,赶紧记录下来吧,也许很多时候的灵光一闪真是一个不错的idea.记录下来前面想起的和现在以及以后的idea,因此这篇文章会不断地实时更新,越来越完善. IDea1 2012年,刚步入高中的时候的第二学期,依稀记得那时候的智能手机还没有想象的普遍,在校门口当时接触了第一台智能机,一个高仿iphone 4s的手机,当时和同学一狠心每人买了一台.当

看死亡笔记后的想法(二)

逮捕火口的当晚,火口面对自己基拉身份即将对全社会公开的局面.公开了他就完蛋了 和他是紧密利益共同体,知道一切秘密的八人会议,火口自然从八人会议推理,到底是谁背叛了? 的确是有人背叛了,但是如果没有第三方外来势力(L)的进入,那就不会出现背叛:因为一直以来,八人会议之间的利益关系非常稳固 (此时在现实里适用背景是公司内部,无第三方实力插手,比如风投) 原因1:公司挣了钱他们也受益,有共同利益. 原因2:死亡的威胁:即使有背叛之心,也有心无力,无法给自己争取更多,或者大量的利益.背叛单靠自己也无力给