IOS/OSX开发问题杂记

来源:互联网 发布:淘宝特价商品 编辑:程序博客网 时间:2024/04/29 17:18

本篇用于记录一些开发过程中遇到的小问题以及解决方法。

之前都是记在Pages上,后来发现并不方便,所以还是记在blog上吧,加深印象,查看方便。

2016/7/18
1. receiver xxx for class message is a forward declaration : 却少import文件,点击xcode提示出问题的地方,command+单击 进入该类所在的头文件中,如NSImage在AppKit.framework里,那么先在targets的general中的Linked frameworks and libraries中添加AppKit.framework,然后import该framework即可。

2016/7/21
1. 获取当前线程的名称: NSLog(@"%@",[NSThread currentThread]);

2016/7/22
1. NSString *a = @"/user/hbw/desktop";
    NSString *b = @"test.jpg";
    NSString *c = [a stringByAppendingPathComponent:b];  //这样字符串c中就存储了:@"/user/hbw/desktop/test.jpg";

2. NSURL *url = @"......";
    NSString *str = [url absoluteString]; //将url转为字符串
    NSURL *url2 = [NSURL urlWithString:str]; //将字符串转为url
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; //将字符串转为NSData
    [data writeToFile:c atomically:YES]; //将data写到路径c表示的文件中

3. new file->resource->property list :创建plist文件

4. 关于文件路径的NSString与NSURL的转换:
//创建一个NSURL路径,要用 fileURLWithPath:    NSURL *exampleURL = [NSURL fileURLWithPath:@"/Users/hbw/Desktop/test.jpg"];        // 获取一个NSURL中的文件所在文件夹的路径,以NSURL表示:    //将url转为string    NSString *exampleString = [exampleURL absoluteString];        //解析出test.jpg所在的文件夹的路径:    //先用“/”字符将exampleString分解,将会分解为Users、hbw、Desktop、test.jpg四项,并存储在strArray中    NSArray *strArray = [exampleString componentsSeparatedByString:@"/"];    // 我们取出strArray中的最后一项,即为test.jpg字符串    NSString *fileName = [strArray lastObject];    //得到_fileName == @"/test.jpg"    NSString *_fileName = [@"/" stringByAppendingString:fileName];    //只要将@"/test.jpg"从exampleString中删去就能得到test.jpg所在文件夹的路径了    NSArray *array = [exampleString componentsSeparatedByString:_fileName];    NSString *docPath = [array objectAtIndex:0]; //docPath == @"file:///Users/hbw/Desktop"    //从docPath中取出@"/Users/hbw/Desktop"    NSString *p = [docPath substringFromIndex:7];    //创建url    NSURL *s = [NSURL fileURLWithPath:p];

2016/7/25
1. 颜色空间主要有四种:RGB、YUV、HSV,Gray(灰阶空间)
HSV使用色调,饱和度,亮度来描述图像。
RGB使用Red,Green,Blue,Alpha来描述图像

2. UIImage和UIView使用的是左上原点坐标,Core Image和Core Graphics使用的是左下原点坐标。这个概念很重要,当你遇到图像绘制倒立问题的时候你就知道了。

3. 
NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)myObject));

2016/7/26
1. 例如CGContextRef, Ref是CoreFoundation的命名规则,看到Ref结尾的对象就知道是CFType类(CF代表Core Foundation)型对象。这样的对象是c类型的对象,不是cocoa类型的对象,所以系统不会自动回收此类对象,需要我们手动去释放。
关于CFTypes,apple api reference有如下的解释:
All other Core Foundation opaque types derive from CFType. The functions, callbacks, data types, and constants defined for CFType can be used by any derived opaque type. Hence, CFType functions are referred to as “polymorphic functions.” You use CFType functions to retain and release objects, to compare and inspect objects, get descriptions of objects and opaque types, and to get object allocators.

ARC的诞生大大简化了我们针对内存管理的开发工作,但是只支持管理 Objective-C 对象, 不支持 Core Foundation 对象。Core Foundation 对象必须使用CFRetain和CFRelease来进行内存管理。那么当使用Objective-C 和 Core Foundation 对象相互转换的时候,必须让编译器知道,到底由谁来负责释放对象,是否交给ARC处理。只有正确的处理,才能避免内存泄漏和double free导致程序崩溃。
(参考 :http://blog.csdn.net/yiyaaixuexi/article/details/8553659)


2016/7/27
1.目前,UIImage和UIView使用的是左上原点坐标,Core Image和Core Graphics使用的是左下原点坐标。这个概念很重要,当你遇到图像绘制倒立问题的时候你就知道了。



0 0
原创粉丝点击