xcode+OC基础学习

首先配置MAC OS 系统   装机也好   虚拟机也好

本人是WIN7下  虚拟机VM 上安装 MAC OS 10.92 +xcode5


OC 基础oc是苹果的OS X 和 IOS 及其相关API,Cocoa 和 Cocoa Touch的主要编程语言

Cocoa  是   苹果的面向对象开发框架,用来生成 Mac OS X 的应用程序。主要的开发语言为 Objective-c

1  NSLog(@"字符串"); 输出字符串  跟C的  printf差不多      NSLog(@"%d %lu",5,strlen(buffer));  

2  

NSString   Cocoa用来处理字符串的类   不可改变
NSString *a ;   a = [NSString stringWithFormat:@"hello Panda!"];   
NSLog(@"%@  length is %d ",a,[a length]);    //length和stringWithFormat都是NSString的类方法
if([str isEqualToString: str2]){
NSLog(@"the same!");
}
[str compare: str2 options: xxx] 选择性比较
[str hasPrefix: @"draft"] 看看是否包含另一个字符串
修改用 NSMutableString这个子类
NSMutableString *str = [NSMutableString stringWithCapacity:50];
[str appendString: @"Hello "];
[str appendFormat: @"human %d",39];  //最后弄完后是 Hello human 39
删除字符串:
NSMutableString *str = [NSMutableString stringWithCapacity:50];// NSMutableString 是NSString的子类
[str appendString:@"1 2 3 4"];
NSRange Range = [str rangeOfString:@"3"];
Range.length++;
[Range deleteCaractersInRange: Range];
最后就剩下  "1 2 4"
可以直接   NSMutableString *str = [NSMutableStringstringWithFormat:@"%d = 1",1];
NSArray  一个Cocoa类,用来存储对象的有序列表,可以在其中放置任意类型的对象 
限制是只能存储OC的对象  不可改变
NSArray * array  = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];
NSArray * array2 = @[@"one",@"two",@"three"];

for (NSInteger i =0; i<[array count]; i++) { 
NSLog(@"index %d is %@",i,[array objectAtIndex:i]);
}
for (NSInteger i2 =0; i2<[array2 count]; i2++) {      
 NSLog(@"index %d is %@",i2,[array2 objectAtIndex:i2]); 
 }
MSMutableArray 可以随意添加
    NSArray *array = @[@"1",@"2",@"3"];
    NSEnumerator *enumerator = [array objectEnumerator];
    id object;
    while (object = [enumerator nextObject]) {
        NSLog(@"I found %@",object);
    }
    for (NSString *string in array) {
        NSLog(@"I found %@",string);
    }
    
    NSNumber *number;
    number = @'x';
    number = @12345;
    number = @12345ul;
    number = @12345ll;
    number = @123.45f;
    number = @123.45;
    number = @YES;
   
    NSRect rect = NSMakeRect(1, 2, 30, 40);
    NSValue *value = [NSValue valueWithBytes:&rect objCType:@encode(NSRect)];//@encode  用来描述C语言基础类型的方法
下面是查询MAC上主目录下.jpg文件打印到列表
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSFileManager *manager;
    manager = [NSFileManager defaultManager];

    NSString *home;
    home = [@"~" stringByExpandingTildeInPath];//当前用户的主目录

    NSMutableArray *files;
    files = [NSMutableArray arrayWithCapacity: 42];

for (NSString *filename in [manager enumeratorAtPath: home]) {
if ([[filename pathExtension] 
isEqualTo: @"jpg"]) {
[files addObject: filename];
} 
}

for (NSString *filename in files) {
NSLog (@"%@", filename);
}
    [pool drain];
//下面为介绍 计数器的原理:
@interface RetainTracker : NSObject
@end // RetainTracker

@implementation RetainTracker
- (id) init//初始化
{
	if (self = [super init]) {
		NSLog (@"init: Retain count of %d.",
			   [self retainCount]);//获得保留计数器的值
	}
	return (self);
} // init

- (void) dealloc  //结束
{
	NSLog (@"dealloc called. Bye Bye.");
	[super dealloc];
} // dealloc
@end // RetainTracker
//main
    RetainTracker *tracker = [RetainTracker new];
    // count: 1
    [tracker retain]; // count: 2
    NSLog (@"%d", [tracker retainCount]);
    [tracker release]; // count: 1
    NSLog (@"%d", [tracker retainCount]);
    [tracker release]; // count: 0, dealloc it


3   .m 文件  .mm 文件扩展名--   c++ and oc编程


  类的说明

//@class 提前告知是类
//下面为两个实例变量+3个方法
@interface Circle : NSObject   //@interface  是定义新类Circle  基于 NSObject类
{
@private
	ShapeColor  fillcolor;
	ShapeRect  bounds;
- (void) setFillColor: (ShapeColor) fillColor; //   :告诉我们后面有参数   参数类型为圆括号中指定 fillColor为参数名

- (void) setBounds: (ShapeRect) bounds;    //有一个矩形区域参数

- (void) draw;	                                                   //方法不需要参数就不需要冒号
}
@implementation Circle  //编译器指令,表明为某个类提供 代码,
                                            //可以定义没在@interface中没有声明过的方法,看做仅能在当前类实现中使用的私有方法
- (void) setFillColor: (ShapeColor) c   //给fillColor重命名
{
	fillColor = c;
} // setFillColor

- (void) setBounds: (ShapeRect) b
{
	bounds = b;
} // setBounds
                                            //如果这里的  是 + 在头 那么就是类方法
- (void) draw
{
	NSLog (@"drawing a circle at (%d %d %d %d) in %@",
		   bounds.x, bounds.y, 
		   bounds.width, bounds.height,
		   colorName(fillColor));
} // draw
//main:
	id shapes[3];
	
	ShapeRect rect0 = { 0, 0, 10, 30 };
	shapes[0] = [Circle new];
	[shapes[0] setBounds: rect0];
	[shapes[0] setFillColor: kRedColor];
	int i;
	for(i=0;i<3;i++)
		{id shape = shapes[i];
			[shape draw];
		}
//下面为类函数重写过程:
@implementation Circle

// I'm new!
- (void) setFillColor: (ShapeColor) c
{
	if (c == kRedColor) {
		c = kGreenColor;
	}
	[super setFillColor: c];  //这行重要
	
} // setFillColor
- (void) draw
{
	NSLog (@"drawing a circle at (%d %d %d %d) in %@",
		   bounds.x, bounds.y, 
		   bounds.width, bounds.height,
		   colorName(fillColor));
} // draw

@end // Circle
//下面展示一个  自己初始化的类
@interface Car : NSObject
{
	Engine *engine;   //另外的两个类
	Tire *tires[4];
}

- (void) print;
@end // Car

@implementation Car

- (id) init
{
	if (self = [super init]) {           //这里就是指代的本身
		engine = [Engine new];
		
		tires[0] = [Tire new];
		tires[1] = [Tire new];
		tires[2] = [Tire new];
		tires[3] = [Tire new];
	}
	return (self);
} // init




xcode基础

  快捷键    我的MAC OS  command 就是 win键   option = alt

  xcode生成执行文件  

在工程的target目录下,找build seeting选项卡,然后找到Per-configuration Build Products Path  ,将值设置为  ./appdir

  “打开我的电脑”    command+n  ->  command +shift+c  

创建快照    command+ctrl+ s 好修改

编辑:

ctrl+e  本行末尾   ctrl+a  本行前端

ctrl + i    重新排列代码

隐藏  command + h

解除导航器  command+0

提示:

ctrl + .  向后翻页    ctrl+ shift + . 向前翻页

按住  alt+ 某个符号就直接查询API

调试:

command+b 生成

command+r  调试               command+   下断

command+ctrl+y  continue        f7 步入   f6 步过     f8 跳出函数

还有双页显示:





  



















原文地址:https://www.cnblogs.com/zcc1414/p/3982372.html