![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
objective-c -- 基础
Lexiaoyao20
这个作者很懒,什么都没留下…
展开
-
只在Debug模式下打印日志
我们经常会遇到这样的需求:只在Debug版本打印日志,而发布版本(Release 版本)不打印日志。要实现这个很简单,两步就可以做到。在项目文件目录中找到 .pch 后缀名的文件,添加下面的代码//DEBUG模式下才打印日志#ifdef DEBUG#define NSLog(...) NSLog(__VA_ARGS__)#else#define NSLog(..原创 2013-11-06 11:19:29 · 1335 阅读 · 0 评论 -
Cocoa NSView右键菜单crash问题
一般我们让NSView弹出右键菜单,只需要设置NSView的menu即可:[aView setMenu:aMenu];但是在做项目的过程中,总是遇到右键菜单(好像打开是Open File或者Save File的时候)crash问题,调试发现是Cocoa库内部的问题。 所以就想着自己来实现弹出右键菜单,还果真没出现crash问题了。实现代码如下,仅需重写rightMouseDown:原创 2013-09-03 17:16:08 · 1500 阅读 · 0 评论 -
[Cocoa]深入浅出Cocoa多线程编程之block与dispatch quene
深入浅出Cocoa多线程编程之block与dispatch quene罗朝辉 (http://www.cnblogs.com/kesalin/)本文遵循“署名-非商业用途-保持一致”创作公用协议 block 是 Apple 在 GCC 4.2 中扩充的新语法特性,其目的是支持多核并行编程。我们可以将 dispatch_queue 与 block 结合起来使用,方便进转载 2013-08-01 17:43:31 · 478 阅读 · 0 评论 -
创建Status Bar 应用
创建一个Cocoa Application工程,如下实现AppDelegate。AppDelegate.h 文件#import @interface AppDelegate : NSObject { NSStatusItem *statusItem;}@property (assign) IBOutlet NSWindow *window;- (IBAction)q原创 2013-07-02 13:49:04 · 835 阅读 · 0 评论 -
最近使用的文件
这个系统有提供API,每次成功打开一个文件后,我们只需调用NSDocumentController的方法:-(void)noteNewRecentDocumentURL:(NSURL *)absoluteURL; 将文件的URL传给该方法,系统会保存文件的信息,点击顶部的Open Recent菜单或者右键Dock就可以看到最近打开的文件列表。那么我们点击列表中的某一项,程序改如何响应呢?只需原创 2013-06-19 14:29:00 · 685 阅读 · 0 评论 -
NSUserDefaults存储颜色
@interface NSUserDefaults (Color)- (void)setColor:(NSColor *)theColor forKey:(NSString *)key;- (NSColor *)colorForKey:(NSString *)key;@end@implementation NSUserDefaults (Color)原创 2013-04-21 23:37:40 · 647 阅读 · 0 评论 -
NSCoding协议实例
NSCoding协议只定义了两个方法:-encodeWithCoder:和 -initWithCoder:。对象通过实现 -(void)encodeWithCoder:(NSCoder*)coder方法把它们自身编码进归档中。通过实现-(id)initWithCoder:(NSCoder *)coder方法解码它们自身。@interface WordInfomation :原创 2013-04-22 00:01:00 · 594 阅读 · 0 评论 -
引用第三方的dylib
所谓dylib,就是bsd风格的动态库。基本可以认为等价于windows的dll和linux的so。mac基于bsd,所以也使用的是dylib。如果你需要引用一个第三方的dylib,在xcode下编译出cocoa程序,在本机上运行是不会出问题的。但是发布出来,给其他用户用,就可能出问题。因为用户不一定有这个库。这个问题给我造成了相当的困扰,我到现在也没找到正规的方法。但是我确实解决转载 2012-10-30 15:26:44 · 724 阅读 · 0 评论 -
objective-c 通告
1. 通告和委托的区别通告也能传递与事件相关的数据。通告不同于委托的地方在于,通告是在对象执行完成动作之后产生,而不是之前。受到通告的对象没有机会建议是否要执行动作,而且对象的通告可以有多个监听者(observer),但是只有一个委托对象。2. 通告的工作机制a.对应用程序中其他地方发生的事件(比如增加一条数据库记录)感兴趣的对象,会向通告中心(Notification C原创 2012-03-13 14:32:11 · 1403 阅读 · 0 评论 -
Cocoa -- 添加和移除开机启动项
一 写plist到~/Library/LaunchAgents/ 目录下// 配置开机默认启动-(void)installDaemon{ NSString* launchFolder = [NSString stringWithFormat:@"%@/Library/LaunchAgents",NSHomeDirectory()]; NSString * boundleID = [[原创 2012-06-01 11:40:24 · 2870 阅读 · 0 评论 -
GDB: Data Formatters temporarily unavailable,will re-try after a 'continue'.
自己写了一个framework,然后写了一个Demo测试了下这个framework,编译的时候不报错,一运行就报下面的错误:GDB: Data Formatters temporarily unavailable,will re-try after a 'continue'. (Cannot call into the loader at present, it is locked.)原创 2012-04-18 16:13:47 · 970 阅读 · 0 评论 -
objective-c Xml常用操作
1.创建XML文件//创建XML文件- (NSXMLDocument *)createXMLDocument:(NSString *)rootName{ NSLog(@"%@ with rootName %@", NSStringFromSelector(_cmd), rootName); NSXMLElement *root = (NSXMLElement *)[NSXMLNode e原创 2012-04-12 10:46:22 · 3531 阅读 · 0 评论 -
类和对象--基础
一.类的一些基础 1.获取类名Class myclass = [myObject class];NSLog(@"My class is %@",[myclass className]);2.判定一个对象是否是某个类if([myObject isKindOfClass:[UIControl class]]){}3.判定对象是否是某个类的成员if([myObje原创 2012-02-23 00:15:17 · 439 阅读 · 0 评论 -
Dispatch Semaphore
用途:使用Dispatch Semaphore控制有限资源的访问说明:如果提交到 dispatch queue 中得任务需要访问某些有限资源,可以使用dispatch semaphore 来控制同时访问这个资源的任务数量。 dispatch semaphore 和普通的信号量类似,唯一的区别是当资源可用时,需要更少的时间来获得dispatch semaphore。使原创 2015-02-26 10:44:13 · 421 阅读 · 0 评论