[Mac OSX]Mac OS X Developer分享与实践

转自

http://hi.baidu.com/hesper/blog/item/da9975ec6820e8d62e2e2102.html

 

是类似Objective-C的JavaScript扩展,运行在客户端,内建了一个强大的图形引擎,方便地支持打开或保存文档,或者拷贝和粘帖等任务。

Objective-C

 

什么是Objective-C

扩充C的面向对象编程语言
Mac OS X,OpenStep主要开发语言
1980年代Brad Cox在Stepstore发明
如果是初学Cocoa,请安装XCode 3(iPhone2发布后会更新会XCode 3.1,Interface Builder renew)学习Foundation.framework(Foundation全称Foundation Framework,是Cocoa的一个子开发框架。Foundation里包含了Cocoa中最基本的一些类,它们在一个Mac应用程序中通常负责对象管理、内存管理、容器等相关数据结构的操作。),就像学习.net framework或者JSDK一样,深入学习后可以开始学习CoreFoundation.framework。

Cocoa Framework简称Cocoa,它是Mac OS X上的快速应用程序开发(RAD, Rapid Application Development)框架,一个高度面向对象的(Object Oriented)开发框架。Cocoa是Mac OS X上原生支持的应用程序开发框架,苹果公司强烈推荐所有Mac开发人员使用。Cocoa Framework都是由Objective-C/C实现的。

OS X程序框架

?View Code OBJECTIVEC
#import
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
[pool release];
}
命令行编译:cc -o test -framework Foundation file-name.m
Hello World!

import <Foundation/Foundation.h>

?View Code OBJECTIVEC
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello, World!");
[pool drain];
return 0;
}
//NSAutoreleasePool是可控制的延迟对象释放的内存管理。方括号中间的内容表示对对象(或类)进行一次方法的调用

函数

例子,返回最佳的文件大小格式

?View Code OBJECTIVEC
- (NSString *)stringFromFileSize:(int)theSize
{
float floatSize = theSize;
if (theSize&lt;1023)
return([NSString stringWithFormat:@"%i bytes",theSize]);
floatSize = floatSize / 1024;
if (floatSize&lt;1023)
return([NSString stringWithFormat:@"%1.1f KB",floatSize]);
floatSize = floatSize / 1024;
if (floatSize&lt;1023)
return([NSString stringWithFormat:@"%1.1f MB",floatSize]);
floatSize = floatSize / 1024;
return([NSString stringWithFormat:@"%1.1f GB",floatSize]);
}
Objective-C 2.0有property和garbage collection(简化了多线程程序的内存管理,Leopard+)

定义一个类// Student.h

?View Code OBJECTIVEC
#import &lt;Cocoa/Cocoa.h&gt;
@interface Student : NSObject &lt;NSCoding&gt; {
NSString *name;
NSString *studentNO;
}
@property(copy) NSString *name;
@property(copy) NSString *studentNO;
@end
// Student.m
#import "Student.h"
@implementation Student
@synthesize name;
@synthesize studentNO;
@end
示范处理函数中调用该类:

?View Code OBJECTIVEC
Student *hayes = [[Student alloc] init];
hayes.name = @"hayes";
hayes.studentNO = @"00001";
NSLog(@"%@", hayes.name);
//NSLog就像printf,定义在NSObjCRuntime.h中,范例:

NSLog (@”string is :%@”, string);
NSLog (@”x=%d, y=%d”, 10, 20);
//需要注意的参数是NSString,如果是其他类型,参考:

%@ 对象
%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位双字
Cocoa处理消息的方法是Delegate和NSResponse类的重载实现。所有平台下的GUI程序都基本以消息驱动的,应用程序就是在处理消息的循环中进行的。键盘输入、鼠标点击或直接派发给应用程序的对象、控件,当一个对象接受到某个事件或者通知的时候,会向它的Delegate对象查询它是否能够响应这个事件或者通知,如果可以这个对象就会给它的Delegate对象发送一个消息。

?View Code OBJECTIVEC
if (delegate != nil &amp;&amp; [delegate respondsToSelector:@selector(theEvent)])
{
[delegate performSelector:@selector(theEvent)];
}
淡入淡出窗口代码

?View Code OBJECTIVEC
#import
#import “FadeWindowController.h”
@implementation FadeWindowController
- (IBAction)showWindow:(id)sender
{
// If the window was hidden, animate its alpha value so it fades in.
if (![self.window isVisible])
{
self.window.alphaValue = 0.0;
[self.window.animator setAlphaValue:1.0];
}
[super showWindow:sender];
}
- (BOOL)windowShouldClose:(id)window
{
// Animate the window’s alpha value so it fades out.
[self.window.animator setAlphaValue:0.0];
// Don’t close the window immediately so we can see the animation.
return NO;
}
- (void)awakeFromNib
{
CAAnimation *anim = [CABasicAnimation animation];
[anim setDelegate:self];
[self.window setAnimations:[NSDictionary dictionaryWithObject:anim forKey:@"alphaValue"]];
}
- (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)flag
{
if(self.window.alphaValue == 0.00) [self close]; //detect end of fade out and close the window
}
@end

OpenGL Programming on Mac

Addison.Wesley_-_OpenGL.programming.on.Mac.OS.X.Dec.2007.rar

CocoaCast (AppleTV HD) RSS

Podcast of Cocoa Programming for Mac OS X 2nd Edition

Mac外围和驱动开发

在HID 驱动开放接口上,或者开源的Darwin上找资料,实现的协议就参考各个平台支持的设备基础协议。

iPhone OS


Core OS
OS X Kernel
Lib System
BSD TCP/IP
Sockets
Security
Power Mgmt
KeyChain
Certificates
File System
Bonjour
Core Service
Collections
Address Book
Networking
File Access
SQLite
Core Location
Net Services
Threading
Preferences
URL utilites
Media
Core Audio
OpenAL
Audio Mixing
Audio Record
Video Playback
JPG,PNG,TIFF
PDF
Quartz(2D)
Core Animation
OpenGL ES
Cocoa Touch
Multi-Touch Events
Multi-touch Controls
Accelerometer
View Hierarchy
Localization
Alerts
Web View
People Picker
Image Picker
Camera
IPhone游戏开发

3D 性能30fps,Accelerometer,使用Instuments的OpenGL ES Measure

OpenAL Framework
Mediaplayer Framework
OpenGL ES Framework
Ref
iPhone Application And Website Development: All Tools And Tutorials You Need

文章 & 教程:

Podcasts:

Community

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值