iOS
文章平均质量分 54
testman00
programmer
展开
-
@property
原创 2015-12-27 22:15:18 · 194 阅读 · 0 评论 -
property替换方法名
@property (nonatomic,assign,setter=isVip:)BOOL vip;[p isVip:YES]if (p.vip){NSLog(@"这是vip客户");}原创 2015-12-28 01:28:42 · 283 阅读 · 0 评论 -
@class 优化作用.
#import || @class头文件中使用 import , 如果包含的文件发生改变, import的文件将需要重新编译, 如果量大, 拖慢运行时间...@class import文件发生改变 , 无序重新编译, 只需当用到的时候 需要重新加载一次, 省很多时间...原创 2015-12-28 02:05:12 · 289 阅读 · 0 评论 -
循环引用, 如果都是对象, 使用 retain + assign
循环引用, 如果都是对象, 使用 retain + assign 因为目的是释放, 不会再重复利用, 因为是对象而使用 两个 retain 就会死循环...原创 2015-12-28 04:37:34 · 239 阅读 · 0 评论 -
内存图
原创 2015-12-28 04:46:07 · 313 阅读 · 0 评论 -
autorelease使用
#import "Person.h"#import int main(int argc, const char * argv[]){ Person * p = [[Person alloc] init]; @autoreleasepool { [p autorelease]; // 需要写在自动释放池里面 才能使系统自动释放 [p run]; } NSLog(@"%lu"原创 2015-12-28 18:14:27 · 176 阅读 · 0 评论 -
instancetype & id 区别
一、什么是instancetypeinstancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象。我们都知道未知类型的的对象可以用id关键字表示,那为什么还会再有一个instancetype呢?二、关联返回类型(related result types)根据Cocoa的命名规则,满足下述规则的方法:1、类方法中,以alloc或转载 2015-12-28 19:11:45 · 244 阅读 · 0 评论 -
ARC
ARC 只关注 强指针 & 弱指针, 对象空间 如果没有 至少一个 强指针指向的话 就会被释放局部变量释放, 所以指针释放, 指针释放, 没有强指针指向 内存空间, 所以对象也释放.原创 2015-12-28 20:06:36 · 182 阅读 · 0 评论 -
MRC 转 ARC
Edit -> Convert -> To object-c ARC原创 2015-12-28 23:35:53 · 227 阅读 · 0 评论 -
ARC兼容 非ARC的类
让程序兼容ARC和非ARC部分, 转变为非ARC -fno-objc-arc 转变为ARC的, -f-objc-arc.项目 -> Build Phases -> Compile Sources -> Compiler Flags里写上上面的标签.原创 2015-12-29 03:12:01 · 242 阅读 · 0 评论 -
static全局变量 & 全局变量
1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中转载 2015-12-29 03:50:12 · 492 阅读 · 0 评论 -
非正式协议
NSString + countNum 类别, 非正式协议Gun + shoot 普通类别所谓的非正式协议就是类别, 即凡是NSObject 或其子类Foundation框架中得类增加的类别, 都是非正式协议.原创 2015-12-29 09:00:06 · 262 阅读 · 0 评论 -
block访问外部变量
栈区 0x7fff5fbff7bc 堆区 0x100600180 (如何判断? 一般后6位 有内容, 不是零 -- 如果是静态区或者常量区的话 后4位有内容, 前面都是零 一般)#import int main(int argc, const char * argv[]) { @autoreleasepool { int m = 10;原创 2015-12-29 12:01:19 · 291 阅读 · 0 评论 -
有参数block 调用
#import typedef void (^workBlock)(int day);void work(workBlock w, int day){ NSLog(@"起床"); NSLog(@"刷牙"); NSLog(@"去车站"); NSLog(@"坐车"); w(day); // 如果写成 w() 提示错误: Too few arguments to block call,原创 2015-12-29 15:31:27 · 1045 阅读 · 0 评论 -
block
(^)() = ^() { };原创 2015-12-29 10:17:49 · 254 阅读 · 0 评论 -
protocol类型限制
main.m#import "Dog.h"#import "Girl.h"#import "caculatorProtocol.h"#import "houseHoldProtocol.h"#import int main(int argc, const char * argv[]){ @autoreleasepool { Girl * girl = [[Girl alloc原创 2015-12-29 20:20:09 · 349 阅读 · 0 评论 -
id & instancetype 的区别
原创 2015-12-29 20:25:04 · 207 阅读 · 0 评论 -
iOS平台XML解析类库对比和安装说明
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢?解析 XML 通常有两种方式,DOM和 SAX:DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历树转载 2016-01-16 13:12:44 · 295 阅读 · 0 评论 -
protocol代理设计模式
原创 2015-12-30 05:08:49 · 230 阅读 · 0 评论 -
逆向编程
先写 再去创建需要的类, #import #import "Student.h"#import "LinkHome.h"#import "WAWJ.h"int main(int argc, const char * argv[]) { @autoreleasepool { Student * stu = [[Student alloc] init];原创 2015-12-30 05:47:22 · 628 阅读 · 0 评论 -
关于作用域 & 框架的概念
(1)@public (公开的)在有对象的前提下,任何地方都可以直接访问。(2)@protected (受保护的)只能在当前类和子类的对象方法中访问(3)@private (私有的)只能在当前类的对象方法中才能直接访问(4)@package (框架级别的)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通过变量名访问我个人理解框架就是包装好的程序原创 2015-12-29 19:04:28 · 331 阅读 · 0 评论 -
不小心修改了系统的文件, 引起的错误.
原创 2015-12-30 06:32:19 · 252 阅读 · 0 评论 -
protocol类似@class方式使用, 能提高效率, 但是有警告.
main.m#import "Dog.h"#import "baseProtocol.h"#import int main(int argc, const char * argv[]){ @autoreleasepool { Dog * dog = [[Dog alloc] init]; [dog run]; } return 0;}baseProtocol.h原创 2015-12-30 08:00:56 · 655 阅读 · 0 评论 -
Foundation框架快速搜索秘籍
基本上包含了Foudation框架内的所有函数和方法。使用方法:全选,自己建一个文本类的文件,如果要使用某个方法却想不起来方法名,直接在文本中搜索关键字即可。 2.1 算术运算函数 2.1.1 rand()函数:产生随机数 2.1.2 abs()函数/labs()函数:整数的绝对值 2.1.3 fabs()/fabsf()/fabsl()函数:浮点数的绝对转载 2015-12-30 08:10:32 · 489 阅读 · 0 评论 -
类扩展 & 分类
扩展框架中得类的功能的时候 , 只能使用 分类来实现. 因为不能修改框架原有的类的内容, 如: NSString+Test(大写开头)自定义的类的 类扩展, 可以使用 Extension , 随意修改.类扩展 使用 .h文件 创建新的 Extension 这种方式 , 只能在 .m文件中导入 并实现相应的方法, 因为导入到.m文件, 所以声明的成员变量和方法都成私有的了..原创 2015-12-30 09:07:09 · 202 阅读 · 0 评论 -
判断图片 & 判断URL , 使用分类实现
main.m#import "NSString+isImage.h"#import "NSString+isURL.h"#import void image(NSString * image){ if ([image isImage]) { NSLog(@"是图片"); } else { NSLog(@"不是图片"); }}void url(NSString * u原创 2015-12-30 12:23:48 · 574 阅读 · 0 评论 -
关于UIWindow的一点儿思考
UIWindow的一点儿思考 每一个IOS程序都有一个UIWindow,在我们通过模板简历工程的时候,xcode会自动帮我们生成一个window,然后让它变成keyWindow并显示出来。这一切都来的那么自然,以至于我们大部分时候都忽略了自己也是可以创建UIWindow对象。 通常在我们需要自定义UIAlertView的时候(IOS 5.0以前AlertView的背景样式等都不能换)我转载 2016-01-16 21:31:50 · 270 阅读 · 0 评论 -
有的客户端密码用MD5加密,那在后台是如何判断相等才能登陆服务器的?
用户所输入密码再用md5把密码再加密一次,再跟数据的密码比对!数据库中存的是md5加密过的数据 人是看不懂的。。用户输入密码后,后台程序通过用户输入的密码 进行md5加密 得到人看不懂的东西后 和数据库中的那个同样看不懂的东西做对比,如果一致 则表示通过验证。。。相等就是if(value== Md5(User.Password)){....}这类判断。当然转载 2016-01-17 00:34:21 · 1603 阅读 · 1 评论 -
iOS开发之宏的深度学习
宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译 优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似 乎对宏的使用和依赖并不多。但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加。 如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的转载 2016-01-17 13:48:46 · 475 阅读 · 0 评论 -
NSRange 使用...
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSString * str1 = @"123ios123itcast123ios111ios"; NSString * str2 = @"ios"; NSRange range = [str1 rangeOfString:str2];原创 2015-12-30 17:56:15 · 300 阅读 · 0 评论 -
字符串截取和替换
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSString * str = @"http://www.baidu.com"; // 从xx位置开始, 到最后结束(包含xx这个位置的字符 == 看成角标) NSString * str1 = [str substringFromInd原创 2015-12-30 19:26:55 · 387 阅读 · 0 评论 -
stringByAppending 各种方法使用...
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSString * str = @"http: @@www. baidu. com"; NSString * path = @"c:/user"; NSString * image = @"bizhi"; NSString * reve原创 2015-12-30 20:20:42 · 1528 阅读 · 0 评论 -
NSString其他用法 , 去除首尾空格
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSString * str1 = @"1"; NSString * str2 = @"3.14"; int a = [str1 intValue]; float b = [str2 floatValue]; NSLog(@"%.2原创 2015-12-30 23:20:22 · 459 阅读 · 0 评论 -
编译时异常 & 运行期异常
编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。 运行期异常: 这意味着程序存在bug,如数组越界原创 2015-12-31 06:06:17 · 623 阅读 · 0 评论 -
NSMutableString 使用
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSString * str = @" itcast"; NSMutableString * mtrStr = [NSMutableString string]; for (int i = 0; i < 10; i++) { // 方法原创 2015-12-30 23:42:30 · 331 阅读 · 0 评论 -
NSArray的使用
1) 回顾C语言中得数组使用方法int a[5] = {1,2};int *pa[3];特点:1)集合2)类型相同3)有序(下标\内存连续)原创 2015-12-31 06:24:06 · 243 阅读 · 0 评论 -
快捷键, 代码块 设置...
kk ---> @"" description @""_stonejj ---> @"%", description @"%@"_jj_stoneannotation ---> /** */ description :/** */ _ stone原创 2015-12-31 08:09:37 · 1463 阅读 · 0 评论 -
NSArry 常用方法...enumerateObjectsUsingBlock:
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSArray * arr1 = [NSArray array]; NSArray * arr2 = [NSArray arrayWithObject:@"aaa"]; // nil 表示数组赋值结束.. NSArray * arr3原创 2015-12-31 08:30:58 · 490 阅读 · 0 评论 -
NSArray 读写文件
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSArray * arr = @[ @"one", @"two", @"three", @"four", @"five", @"six" ]; // 回顾 NSString * path = @"/Users/stone/Desktop";原创 2015-12-31 09:00:35 · 417 阅读 · 0 评论 -
NSArray & NSString 关系
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSArray * arr = @[ @1, @2, @3, @4 ]; // 把数组中得元素用 "-" 连接起来 NSString * str = [arr componentsJoinedByString:@"-"]; NSLog(原创 2015-12-31 09:42:39 · 385 阅读 · 0 评论