Objective-C
文章平均质量分 88
Sodaslay
这个作者很懒,什么都没留下…
展开
-
objective-c NSString 使用详细指南
Declaring Constant String Objects A constant string object is declared by encapsulating the string in double quotes (") preceded by an @ sign. For example:@"This is a constant character string o转载 2012-03-13 19:48:23 · 570 阅读 · 0 评论 -
Objective-c - nil, Nil, NULL和NSNull
nil: A null pointer to an Objective-C object.( #define nil ((id)0) )Nil: A null pointer to an Objective-C class.NULL: A null pointer to anything else, is for C-style memory pointers.转载 2012-03-19 20:21:21 · 629 阅读 · 0 评论 -
Relaunching Your Application
Relaunching Your ApplicationMatt PatenaudeWhether you're applying new preferences, installing a new version of your app, or perhaps something more unusual, there may come a time in your life where转载 2012-06-12 10:47:08 · 976 阅读 · 0 评论 -
教程:通过NSTask用Cocoa执行perl脚本
本文将用一个例子帮助你理解如何使用NSTask,例子通过在Cocoa中执行一个perl脚本,实现去掉给定NSString中的所有HTML标签。 这里是一个简单的perl脚本,文件名是stripper.pl,功能是去掉所有HTML标签。 #!/usr/bin/perlwhile ( $_ =~ s/[^>]*>//gs;print $_;} 记得把这转载 2012-06-15 14:36:36 · 770 阅读 · 0 评论 -
[系统控件重绘教程(二)]重绘NSButton
首先大家看Apple关于NSButton的描述,NSButton跟NSWindow一样,它的外观形式也是委托给NSButtonCell来处理的, 自身只包含逻辑代码。所以重绘NSButton就是重绘NSButtonCell啦,然后把NSButton的cell设置位你自己的cell就 好了。1)重绘目标首 先观察一下系统NSButton的行为和外观表现,可以发现默认Button(快捷转载 2012-06-14 18:57:33 · 1728 阅读 · 0 评论 -
把文件压缩成zip包的代码
这段代码由 CocoaChina 会员“garnett2183”分享,适用于 Mac 应用中添加文件压缩功能。+(BOOL) archiveFile:(NSString*)srcfile destZipFile:(NSString*)zipfile { NSTask * zipTask = [[NSTask alloc] init]; [zipTask setL转载 2012-06-15 12:45:44 · 1328 阅读 · 0 评论 -
Cocoa中用NSTask执行外部命令并获取输出结果的方法
本文介绍了如何通过NSTask在当前目录执行“ls -l -a -t”,并将结果保存在NSString中的基本方法。 NSTask *task;task = [[NSTask alloc] init];[task setLaunchPath: @"/bin/ls"]; NSArray *arguments;arguments = [NSArray arrayWith转载 2012-06-15 14:19:57 · 1971 阅读 · 0 评论 -
iPhone官方SDK用于读写临时数据的方法
我们知道,出于安全考虑,iPhone的官方SDK并不能像toolchain一样随意写文件。感谢waza提供的官方SDK用于读写临时数据的方法。 bool writeApplicationData(NSData *data, NSString *fileName) { NSArray *paths = NSSearchPat转载 2012-06-15 14:48:38 · 465 阅读 · 0 评论 -
[系统控件重绘教程(一)]重绘NSWindow
NSWindow的风格一直只有两种,很难看。Panel倒是有种HUD风格的,但window没有,毕竟window和panel的titile大小还是不一样的,网上有关于HUDWindow的代码,不过那是把window的titlebar给隐藏掉,自己画上三个button和右下角可以resize的东东,如果用这个window来弹出sheet的话会很诡异的出现…… 就是sheet从window的最上转载 2012-06-14 18:55:37 · 2771 阅读 · 0 评论 -
利用NSFileManager获取文件(文件夹)列表
在开发iPhone程序时,有时候要对文件进行一些操作。而获取某一个目录中的所有文件列表,是基本操作之一。通过下面这段代码,就可以获取一个目录内的文件及文件夹列表。NSFileManager *fileManager = [NSFileManager defaultManager];//在这里获取应用程序Documents文件夹里的文件及文件夹列表 NSArray *d转载 2012-06-15 12:49:04 · 815 阅读 · 0 评论 -
在Dock图标上画进度条
如果你用过Toast这个刻录软件,你会发现在刻录的时候,Dock图标上会有一个进度条,表示刻录的进度。如果你在用XCode,编译的时候图标上也会有一个进度条表示编译的进度。其实在Dock图标上画进度条是很简单的事情,你只需要做如下工作即可:要在Dock上显示图标,最简单的方法是使用NSApp的setApplicationIconImage:方法。我们只要创建一个NSImage,将应用程转载 2012-06-15 14:30:32 · 660 阅读 · 0 评论 -
如何将禁用的文本框内容颜色变灰
NSTextField在禁用的时候不能自动变灰,你需要使用secondarySelectedControlColor,目的就是聚焦没有焦点的控件。如何实现呢? 要实现这个功能,继承NSTextField,并且重载setEnabled:方法来修改颜色。 - (void) setEnabled: (BOOL) flag{ [super setEnabled: fl转载 2012-06-15 14:43:45 · 1935 阅读 · 0 评论 -
【Cocoa(mac) Application 开发系列之三】自定义NSView并绘制一些常见的图形及字符串;
http://blog.csdn.net/xiaominghimi/article/details/7642624不多说,比较简单,直接给出源码,大家作为参考吧。对于Cocoa application 话说回来比较easy,如果之前你接触过iOS 的IB的话 ,基本上没什么可说的,上手很快;因此对于Cocoa Application 不会太快的更新,接着Himi转载 2012-07-06 09:52:09 · 1061 阅读 · 0 评论 -
判断NSString是否为数字,以及转换为数字
当NSString为纯数字的时候可以用下面的方法://判断是否为整形:- (BOOL)isPureInt:(NSString*)string{ NSScanner* scan = [NSScanner scannerWithString:string]; intval; return[scanscanInt:&val]原创 2012-06-27 15:25:54 · 4576 阅读 · 0 评论 -
个人开发者帐号+wireless install 实现非app store程序的在线更新功能
公司有个客户,程序不上app store,但是需要有在线更新的功能。因为公司的企业级帐号还没申请下来,没法搭建自己的发布平台。好在客户正好只有100台客户端的安装需求,昨天研究了一个下午,发现利用个人开发者帐号也能基本实现该功能。分享下实现方法,用得着的兄弟可以参考下~ (高手绕行)一:在app中添加检测版本号的代码: 调用查询最新版本号的web 服转载 2012-07-11 16:44:12 · 693 阅读 · 0 评论 -
MVC模式已死?何不试试MOVE
MVC模式在编程中的应用,是一个很了不起的主意。“数据模型(Model)”可以封装与应用程序的业务逻辑相关的数据及对数据的处理方法;“视图层(View)”能够实现数据有目的的显示;“控制器(Controller)”能够在不同层面间起到组织作用,对应用程序的流程进行控制。不过,可能你在使用这种三层架构模式的过程中会逐渐迷惑。因为有很多代码你不知道把它放哪,就只好把它放到控制层,最后发现在控制层中转载 2012-07-11 16:46:21 · 496 阅读 · 0 评论 -
深入浅出Cocoa之Core Data(1)- 框架详解
Core data 是 Cocoa 中处理数据,绑定数据的关键特性,其重要性不言而喻,但也比较复杂。Core Data 相关的类比较多,初学者往往不太容易弄懂。计划用三个教程来讲解这一部分:框架详解:讲解 Core data 框架,运作过程,设计的类;Core data应用程序示例:通过生成一个使用 Core data 的应用程序来讲解如何 在 XCode 4 中使用 Core转载 2012-08-08 17:32:15 · 1112 阅读 · 0 评论 -
NSWorkspace 详细使用示例
NSWorkspace 为应用程序提供如下服务:1)打开,操作文件/设备,获取文件/设备信息2)跟踪文件,设备以及数据库的变动3)设置或获取文件的 Finder 信息4)启动应用程序。 NSWorkspace 是个 Singleton 类,我们通过 sharedWorkspace 来访问它。比如下面的语句用 TextEdit 打开指定的文件:[[NSWorkspace转载 2012-08-08 21:44:50 · 2115 阅读 · 0 评论 -
深入浅出Cocoa之Core Data(2)- 代码示例
前面详细讲解了 Core Data 的框架以及设计的类,下面我们来讲解一个完全手动编写代码使用这些类的示例,这个例子来自苹果官方示例。在这个例子里面,我们打算做这样一件事情:记录程序运行记录(时间与 process id),并保存到xml文件中。我们使用 Core Data 来做这个事情。示例代码下载:点击这里一,建立一个新的 Mac command-line tool app转载 2012-08-08 17:33:59 · 727 阅读 · 0 评论 -
深入浅出ObjC之消息
在入门级别的ObjC 教程中,我们常对从C++或Java 或其他面向对象语言转过来的程序员说,ObjC 中的方法调用(ObjC中的术语为消息)跟其他语言中的方法调用差不多,只是形式有些不同而已。譬如C++ 中的:Bird * aBird = new Bird();aBird->fly();在ObjC 中则如下:Bird * aBi转载 2012-08-08 21:42:02 · 635 阅读 · 0 评论 -
深入浅出Cocoa之Core Data(3)- 使用绑定
前面讲解了 Core Data 的框架,并完全手动编写代码演示了 Core Data 的运作过程。下面我们来演示如何结合 XCode 强大的可视化编辑以及 Cocoa 键值编码,绑定机制来使用 Core Data。有了上面提到的哪些利器,在这个示例中,我们无需编写 NSManagedObjectModel 代码,也无需编写 NSManagedObjectContext,工程模版在背后为我们做了这些转载 2012-08-08 17:35:19 · 1193 阅读 · 0 评论 -
深入浅出Cocoa 之动态创建类
在前文《深入浅出Cocoa之类与对象》一文中,我已经详细介绍了ObjC中的 Class 与 Object 的概念,今天我们来如何在运行 时动态创建类。下面这个函数就是应用前面讲到的Class,MetaClass的概念,在运行时动态创建一个类。这个函数来自《Inside Mac OS X-The Objective-C Programming Language》。#import转载 2012-08-08 21:49:14 · 394 阅读 · 0 评论 -
从C++到Objective-C
Objective-C 可以算作 Apple 平台上“唯一的”开发语言。很多 Objective-C 的教程往往直接从 Objective-C 开始讲起。不过,在我看来,这样做有时候是不合适的。很多程序员往往已经掌握了另外一种开发语言,如果对一门新语言的理解建立在他们已有的知识之上,更能 起到事半功倍的效果。既然名为 Objective-C,它与 C 语言的联系更加密切,然而它又是 Objecti转载 2012-08-09 16:29:18 · 1401 阅读 · 0 评论 -
深入浅出Cocoa之 Method Swizzling
在前文深入浅出Cocoa之消息中,我简要介绍了ObjC中消息的基本情况,包括SEL查找,缓存以及消息转发等。在本文中,我要介绍一个很有趣的技术,Method swizzling,通过这个手法,我们可以动态修改方法的实现,从而达到修改类行为的目的。当然,还有其他办法(如 ClassPosing,Category)也可以达到这个目的。ClassPosing是针对类级别的,是重量级的手法,Categ转载 2012-08-08 21:43:36 · 619 阅读 · 0 评论 -
iOS多线程编程:线程同步总结
1:原子操作 - OSAtomic系列函数iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件。不同线程如果通过原子操作函数对同一变量进行操作,可以保证一个线程的操作不会影响到其他线程内对此变量的操作,因为这些操作都是原子式的。因为原子操作只能对内置类型进行操作,所以原子操作能够同步的线程只能位于同一个进程的地址空间内。2:锁 - NSLock系列对象iOS平台转载 2012-07-13 15:49:58 · 1571 阅读 · 0 评论 -
Windows下搭建Objective-C运行环境
最近打算学习关于iOS开发的相关知识,于是就要学习Objective-C了,买了几本参考书,开始自己学习这门新语言。不过感觉仅仅看书是不行 的,就打算边学边写点程序。不过众所周知,正规的开发环境Xcode只有在Mac上面才有,作为一名穷学生,暂时还买不起呀,桑心...于是只能到网上搜 集如何在windows下运行Objective-C程序,网上这方面的信息很多,不过有许多都有点过时,并且信息比转载 2012-08-17 16:59:09 · 2409 阅读 · 0 评论 -
Windows上使用Objective-C和Cocoa
最近进行iPhone的开发,使用了Cocoa,感觉Cocoa设计很精致,Objecitive-c语法也很简单和易用,因此想是否在Windows下也有可以运行的环境,这样可以方便使用,否则只在MAC上用,安装虚拟机或购买硬件都比较麻烦,搜索了一下资料,还真有这方面的工具。关于cocoa跨平台的问题http://stackoverflow.com/questions/2049099/cocoa转载 2012-08-17 17:24:58 · 1259 阅读 · 0 评论 -
@synchronized()
Objective-c支持多线程的应用程序。 这意味着,两个线程可以尝试修改在同一时间相同的对象,这种情况可能导致在程序中的严重问题。 为了保护代码部分在一个时间被执行在多个线程,Objective - C提供了@synchronized()同步指令。在@ synchronized()指令锁定的的代码段由单个线程使用。其他线程被阻塞,直到该线程退出保转载 2012-08-27 14:53:27 · 1156 阅读 · 0 评论 -
NSFont常用字体
1NSFont *font= [NSFont systemFontOfSize:[NSFont smallSystemFontSize]]; 2// NSFont *font = [NSFont fontWithName:@"Helvetica" size:8];3// NSFont *font = [NSFont boldSystemFontOfSiz原创 2012-11-03 11:11:40 · 4434 阅读 · 0 评论 -
CoreAnimation编程指南(七)图层Action
图层的行为在以下情况发生的时候被触发:从图层树里面插入或者删除一个图层,图层的属性值被修改了,或者程序显式要求。通常情况下,行为触发器是动画显示的结果所在。 1.1 行为对象的角色一个行为对象是一个通过CAAction协议响应行为标识符的对象。行为标识符使用标准圆点分隔的关键路径来命名。图层负责把行为标识符映射到特定的行为对象。当一个特定标识符的行为对象被确定的时候,它会发送一个CAA转载 2012-11-25 00:13:23 · 481 阅读 · 0 评论 -
OSATOMIC.h的介绍 OSATOMIC与synchronized 加锁的对比 iOS开发 多线程编程 .
这段话是从网上copy过来的,总结了一下原子操作的作用。但是文中提到的osbase.h文件找不到。可能是因为版本升级我的lib中没有这个文件。iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件。不同线程如果通过原子操作函数对同一变量进行操作,可以保证一个线程的操作不会影响到其他线程内对此变量的操作,因为这些操作都是原子式的。因为原子操作只能对内置类型进行操作,所以原子操作转载 2012-11-22 19:17:55 · 798 阅读 · 0 评论 -
CoreAnimation编程指南(二)渲染架构
虽然核心动画的图层和 Cocoa的视图在很大程度上没有一定的相似性,但是他们两者最大的区别是,图层不会直接渲染到屏幕上。 在模型-视图-控制器(model-view-controller)概念里面NSView和UIView是典型的视图部分,但是在核心动画里面图层是模型部分。图层封装了几何、时间、可视化属性,同时它提供了图层现实的内容,但是实际显示的过程则不是由它来完成。每个可见的图层转载 2012-11-25 00:09:58 · 494 阅读 · 0 评论 -
CoreAnimation编程指南(四)图层树结构
图层不但给自己提供可视化的内容和管理动画,而且充当了其他图层的容器类,构建图层层次结构。本章介绍了图层层次结构,以及如何操纵该图层层次结构。 1.1 什么是图层树的层次结构图层树是核心动画里面类似Cocoa视图的层次结构。比如一个NSView或者UIView的实例拥有父视图(superview)和子视图(subview),一个核心动画的图层拥有父图层(suplayer)和子图层(s转载 2012-11-25 00:11:24 · 575 阅读 · 0 评论 -
CoreAnimation编程指南(五)图层内容
当我们使用Cocoa的视图的时候,我们必须继承NSView或者UIView并且重载函数drawRect:来显示任何内容。但是CALayer实例可以直接使用,而无需继承子类。因为CALayer是一个键-值编码兼容的容器类,你可以在实例里面存储任意值,所以子类实例化完全可以避免。1.1 给CALayer提供内容你可以通过以下任何一种方法指定CALayer实例的内容:使用包含图片内容的C转载 2012-11-25 00:12:08 · 533 阅读 · 0 评论 -
CoreAnimation编程指南(九)图层布局
NSView提供了经典的“stuts and springs”模式,用于视图调整大小的时候把关联到它父图层的视图重新调整位置。图层支持该模式,而且Mac OS X上面的核心动画提供了一个更通用的布局管理器机制,允许开发者自己写他们自己的布局管理器。可以为图层定制一个布局管理器(它通常实现CALayoutManager协议),负责给图层的子图层提供布局功能。本章介绍了约束布局管理器和如何配置一系转载 2012-11-25 00:14:50 · 505 阅读 · 0 评论 -
NSInvocation的使用
http://blog.iosxcode4.com/?p=125在 iOS中可以直接调用 某个对象的消息 方式有2种一种是performSelector:withObject:再一种就是NSInvocation第一种方式比较简单,能完成简单的调用。但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些转载 2012-11-22 19:15:17 · 469 阅读 · 0 评论 -
volatile关键字
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。 用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。 没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取转载 2012-11-25 00:01:11 · 356 阅读 · 0 评论 -
CoreAnimation编程指南(八)事务
图层的每个改变都是事务的一部分。CATransaction是核心动画类,它负责成批的把多个图层树的修改作为一个原子更新到渲染树。本章介绍了核心动画支持的两种事务。隐式事务和显式事务。 1.1 隐式事务当图层树被没有获得事务的线程修改的时候将会自动创建隐式事务,当线程的运行循环(run-loop)执行下次迭代的时候将会自动提交事务。代码1的示例修改图层的opacity,zPosi转载 2012-11-25 00:14:14 · 603 阅读 · 0 评论 -
CoreAnimation编程指南(一)概念
第一章 核心动画概念核心动画是一套包含图形绘制,投影,动画的Objective–C类集合。它通过开发人员所熟悉的应用程序套件和Cocoa Touch视图架构的抽象分层模式,同时使用先进的合作效果提供了一套流畅的动画。动态的动画接口很难创建,但是核心动画通过提供如下接口使这些创建起来变得更加简单:简单易用的高性能混合编程模型。 类似视图一样,你可以通过使用图层来创建复杂的接转载 2012-11-25 00:09:12 · 559 阅读 · 0 评论 -
CoreAnimation编程指南(三)几何变换
本章介绍图层的几何组成部分,及他们之间的相互关,同时介绍如何变换矩阵可以产生复杂的视觉效果。 1.1 图层的坐标系图层的坐标系在不同平台上面具有差异性。在iOS系统中,默认的坐标系统原点在图层的中心左上角地方,原点向右和向下为正值。在Mac OS X系统中,默认的坐标系原点在图层的中心左下角地方,原点向右和向上为正值。坐标系的所有值都是浮点类型。你在任何平台上面创建的图层都采用该平台默转载 2012-11-25 00:10:43 · 477 阅读 · 0 评论