随笔分类 -  02 Object-C

摘要:一、类Class中的属性property 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如:@interface MyViewController :UIViewController{ UIButton *myButton;}@property (nonatomic, retain) UIButton *myButton;@end 最近,苹果将默认编译器从GCC转换为LLVM(low level virtual machine),从此不再需要为属性声明实例变量了。如果LLVM发现一个没有匹配实例... 阅读全文
posted @ 2014-04-12 14:02 ygm900 阅读(29599) 评论(3) 推荐(3)
摘要:要点:1、回调函数就是那些自己写的,但是不是自己来调,而是给别人来掉的函数。(消息响应函数就可以看成是回调函数,因为是让系统在合适的时候去调用。这不过消息响应函数就是为了处理消息的,所以就拿出来单做一类了。其实本质上就是回调函数。)2、回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。这一设计允许了底层代码调用在高层定义的子程序。回调的形式因程序设计语言的不同而不同。(C, C++ and Pascal允许将函数指针作为参数传递给其它函数。其它语言,例 阅读全文
posted @ 2014-03-29 13:16 ygm900 阅读(6194) 评论(0) 推荐(0)
摘要:问题:NSBundle *bundle = [NSBundle mainBundle]; //取得mainBundleNSString *pathOfPlist = [bundle pathForResource:@"PlistTest-Info" ofType:@"plist"]; //取得文件路径解决方案:单击项目-》Build phases-》找到CopyBundleResources 然后将PlistTest-Info.plist文件添加进来即可。参考:http://www.it165.net/os/html/201301/4327.htmlht 阅读全文
posted @ 2014-03-28 08:12 ygm900 阅读(2613) 评论(0) 推荐(0)
摘要:typedef作为类型定义关键字,用于在原有数据类型(包括基本类型、构造类型和指针等)的基础上,由用户自定义新的类型名称。在编程中使用typedef的好处,除了为变量取一个简单易记且意义明确的新名称之外,还可以简化一些比较复杂的类型声明。比如:typedef int INT32;将INT32定义为与int具有相同意义的名字,这样类型INT32就可用于类型声明和类型转换了,它和类型int完全相同。比如:INT32a;//定义整型变量a(INT32)b;//将其它的类型b转换为整型既然已经有了int这个名称,为什么还要再取一个名称呢?主要是为了提高程序的可移植性。比如,某种微处理器的int为16位 阅读全文
posted @ 2014-03-18 14:03 ygm900 阅读(361) 评论(1) 推荐(1)
摘要:__block 变量一般来说,在block内只能读取在同一个作用域的变数而且没有办法修改在block外定义的任何变量,此时若我们想要这些变数能够在block中被修改,就必须在前面挂上__block的修饰词,以上面第一个例子中的 multiplier 来说,这个变数在 block 中是唯读的,所以 multiplier = 7 指定完后,在 block 中的 multiplier 就只能是 7 不能修改,若我们在 block 中修改 multiplier ,在编辑时就会产生错误,因此若想要在 block 中修改 multiplier ,就必须在 multiplier 前面加上 __block 的 阅读全文
posted @ 2014-03-18 13:51 ygm900 阅读(422) 评论(0) 推荐(0)
摘要:最近的工作中比较频繁的用到了Block,不在是以前当做函数指针的替代或者某些API只有Blocks形式的接口才不得已用之了,发现自己对其了解还是太浅,特别是变量的生存期,按惯例还是翻译官方文档,原文链接。介绍Block 对象是C语言层面的语法,也是一个运行时特性. 它们很类似与标准的C函数,但是除了可执行的代码,它们还包含了与自动(栈)或托管(堆)的内存所绑定的变量。因此一个block维护了一系列的状态(即数据),在执行时会改变代码的行为。你可以使用blocks编写函数表达式当参数传入API,也可以将其保存下来用于多线程。Blocks在回调(回调的概念)中非常有用,因为block不仅包含着.. 阅读全文
posted @ 2014-03-18 13:48 ygm900 阅读(673) 评论(0) 推荐(0)
摘要:开始:Block 简介Block 是 iOS 4.0 和 Mac OSX 10.6 引入的一个新特性。 Block 可以极大的简化代码。 他们可以帮助你减少代码, 减少对代理的依赖, 并且写出更加简洁,可读性强的代码。即使有这么多好处, 还是有很多开发者没有使用 Block, 因为他们不知道如何使用。 但是 Block 绝对是你作为一个 Objective-C 程序员,一定会想要掌握的技能。让我们来看看 Block 是谁, 是什么,在哪里用它, 为什么用它, 还有什么时候用它。Block 是什么东西,它为什么那么重要?Block 的核心就是一段可以在以后的时间里执行的代码。Block 是fir 阅读全文
posted @ 2014-03-18 11:43 ygm900 阅读(2180) 评论(0) 推荐(0)
摘要:翻译文档上的
bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小
区别主要在坐标系这一块。 很明显一个是自己为原点的坐标系,一个是以屏幕为原点的坐标系。绝对坐标。。。相对坐标。。。比如屏幕旋转的时候就要以相对来重绘。
frame 如果一个按钮,是在表格里,按钮的frame 的坐标也是相对的,并不是相对屏幕,也就是说是相对坐标,不是绝对坐标 我也想知道任何一个uiview如何求得它在屏幕上的坐标。 view 的frame是view在它的super view 的位置与尺寸。
view 的bounds可以用来帮助它的... 阅读全文
posted @ 2014-03-13 09:38 ygm900 阅读(473) 评论(0) 推荐(0)
摘要:这是一个观察者模式。首先在你需要监听的类中加入观察者:- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;这个观察者在监听到anObject发送名字为aName的notification时,调用selector的方法,在aSelector方法中得到userInfo。anObject表示从谁那儿发送出来的消息。比如:[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@select 阅读全文
posted @ 2014-03-12 14:59 ygm900 阅读(2559) 评论(0) 推荐(0)
摘要:转:http://www.2cto.com/kf/201401/269467.html用block可以定义任意的代码片段,将其像对象一样传入另一个方法;它是c级别的语法,和C语言中的函数指针非常相似。在C语言中,函数指针和block写法分别如下12int (* func1)(int a, int b);//c函数指针返回类型 | 函数名 | 参数12int (^backValue)(int num);//block返回类型 | 方法名 | 参数从表面来看两者唯一的区别就在于*和^。通常来说,block都是一些简短代码片段的封装,适用做工作单元,通常用来做并发任务、遍历以及回调。block对象也 阅读全文
posted @ 2014-03-12 13:56 ygm900 阅读(1706) 评论(0) 推荐(0)
摘要:if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstStart"]){ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstStart"]; NSLog(@"第一次启动"); }else{ NSLog(@"不是第一次启动"); } 阅读全文
posted @ 2014-02-27 17:05 ygm900 阅读(11290) 评论(0) 推荐(0)
摘要:预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。 关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以下分3种情况: 1:情况1: #ifdef _XXXX ...程序段1... #else ...程序段2... #endif 这表明如果标识符_XXXX已被#define命令定义... 阅读全文
posted @ 2013-12-19 10:52 ygm900 阅读(7325) 评论(0) 推荐(0)
摘要:写了一个简单的测试宏指令,然后在下面代码中报错,不知道怎么修复?谢谢#define test(condition) do{\ if (condition) {\ //// 8);test(i 8Passed: i < 8转;http://ask.csdn.net/questions/1090 阅读全文
posted @ 2013-12-13 01:01 ygm900 阅读(1210) 评论(0) 推荐(0)
摘要://release屏蔽NSLog//放在.pch文件里#ifdef DEBUG#else#define NSLog(...) {};#endif//G。C。D#define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)#define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)//Device#define isRetina ([UIScreen instancesRespo 阅读全文
posted @ 2013-12-12 13:49 ygm900 阅读(387) 评论(0) 推荐(0)
摘要:(一)代理模式应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求。列表row个数delegate自定义的delegate(二)观察者模式应用场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息。优势:解耦合敏捷原则:接口隔离原则,开放-封闭原则实例:Notification通知中心,注册通知中心,任何位置可以发送消息,注册观察者的对象可以接收。kvo,键值对改变通知的观察者,平时基本没 阅读全文
posted @ 2013-12-12 03:22 ygm900 阅读(357) 评论(0) 推荐(0)
摘要:NSLog的格式如下所示:%@ 对象%d, %i 整数%u 无符整形%f 浮点/双字%x, %X 二进制整数%o 八进制整数%zu size_t%p 指针%e 浮点/双字 (科学计算)%g 浮点/双字%s C 字符串%.*s Pascal字符串%c 字符%C unichar%lld 64位长整数(long long)%llu 无符64位长整数%Lf 64位双字转:http://justcoding.iteye.com/blog/1356462 阅读全文
posted @ 2013-12-12 00:17 ygm900 阅读(265) 评论(0) 推荐(0)
摘要:输出BOOL值的方法:NSLog(@"%@",YES?@"YES":@"NO");%@输出字符串。NSLog(@"ifReadOnly value: %@" ,ifReadOnly?@"YES":@"NO"); 阅读全文
posted @ 2013-12-11 11:01 ygm900 阅读(2346) 评论(0) 推荐(0)
摘要:如何:为iOS 的方法写注释 让xcode 能够索引得到?按照如下方法为ios项目写注释:将会让xcode能够索引得到如下结果: 阅读全文
posted @ 2013-12-09 14:51 ygm900 阅读(381) 评论(0) 推荐(0)
摘要:http://www.cocoachina.com/applenews/devnews/2012/1212/5313.html我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App是如何突破600秒的限制的呢?像网易公开课就可以在后台持续下载,优酷也可以在后台持续缓存,这是怎么做到的呢?一般来说,要实现iOS长时间后台运行,需要声明VOIP、Audio或GPS。Audiosession实现方法很简单,就是在后台一直播放一个无声的音乐文件,这样就相当于声明了Audio,就可以轻松突破600秒的限制了。通过播放“静默”音让程序在后台执行的做法( 阅读全文
posted @ 2013-12-06 13:06 ygm900 阅读(2749) 评论(0) 推荐(0)
摘要:本文的主角是一个苦逼的程序员,最近打算开始研究越狱破解,因为打算做类似一类越狱插件的东西给自己使用。所以就了解了一下越狱破解的一个原理过程。 每个手机都会有手机系统,苹果也不例外。每个手机系统都基于不同的操作系统。 在linux/unix操作系统的台式机中,想要越狱或者破解 要拿到手机系统的所有源码,权限,自由读取端口。因此要找到linux/unix的漏洞相对应简单的。只需要大量的时间无止境的分析就好了。而iOS虽然没有公开源代码,但iOS是基于开源的XNU架构的,苹果的硬件也相对来说更封闭一些。已被越狱的iOS4和iOS5的两个系统都有一个自带的调试器-该调试器是为了方便苹果内部软件... 阅读全文
posted @ 2013-12-05 18:34 ygm900 阅读(842) 评论(0) 推荐(0)