欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Objective-C Primer(1)Get started!  

程序员文章站 2022-05-13 16:51:56
...

Objective-C Primer(1)Get started!

  • Author: Michael Zhong
  • Email: zhongchao.ustc#gmail.com (# -> @)
  • Blog:blog.csdn.net/poechant
  • Date: May 6th, 2012

1 Get started! – Hello World

Before Xcode 4.2, Manual Reference Counting is required.


//
//  main.m
//  ObjectiveCTest
//
//  Created by 超 钟 on 12-5-6.
//  Copyright (c) 2012年 http://blog.csdn.net/poechant. All rights reserved.
//

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    NSDate* date = [[NSDate alloc] init];
    NSLog(@"The time is: %@", date);
    [date release];
    [pool drain];
    return 0;
}

However, from Xcode version 4.2, it’s very easy to handle your memory management and avoid to leak memory. Auto Reference Counting(ARC) is optional when you create a project.


//
//  main.m
//  ObjectiveCTest
//
//  Created by 超 钟 on 12-5-6.
//  Copyright (c) 2012年 http://blog.csdn.net/poechant. All rights reserved.
//

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    
    NSDate* date = [[NSDate alloc] init];
    NSLog(@"The time is: %@", date);
    return 0;
}

Then how to switch ARC and MRC? When you are setting project properties, you will find that there is an option about Apple LLVM compiler 3.0 - language / Objective-C Automatic Reference Counting.

2 Basic types

How to output basic types is always one of the first several things people concerns.


// Variables of basic type
int             intVal          = 10;
double          doubleVal       = 3.21;
float           floatVal        = 9.87;
unsigned long   unsignedLongVal = 12345678;
NSInteger       nsIntegerVal    = 998877;
char            charVal         = 'a';

// Output
NSLog(@"Hello, World!");
NSLog(@"%d", intVal);
NSLog(@"%lf", doubleVal);
NSLog(@"%f", floatVal);
NSLog(@"%ld", unsignedLongVal);
NSLog(@"%ld", nsIntegerVal);
NSLog(@"%c", charVal);
NSLog(@"The time is: %@", date);

As you see, it’s similar to C language. But you should use%@for outputing a string instead of%s.

3 How to define and implement a class?

As we know, Objective-C is an Object-oriented language. Thus, you can make your own class. The following program is a complete one, which shows how to define a class.


//
//  TestClass.h
//  ObjectiveCTest
//
//  Created by 超 钟 on 12-5-6.
//  Copyright (c) 2012年 http://blog.csdn.net/poechant. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface TestClass : NSObject
{
    int foo;
}
@property (nonatomic) int foo;
-(void)someMethod;
@end

@interfaceidentifier is used for define a class. The way of deriving is similar to C++. Usepropertykeyword to indicate a member field. Use-to define a member method (or funciton) prototype.

This following program tells you how to implement a class.


//
//  TestClass.m
//  ObjectiveCTest
//
//  Created by 超 钟 on 12-5-6.
//  Copyright (c) 2012年 http://blog.csdn.net/poechant. All rights reserved.
//

#import "TestClass.h"

@implementation TestClass
@synthesize foo;

-(void)someMethod
{
    NSLog(@"some method got called");
}
@end

implementationis used for implementing the class.

4 Try to invoke the method you define in a class

It’s very easy as well.


TestClass *test = [[TestClass alloc] init];
[test someMethod];
[test release];

-

转载请注明来自柳大的CSDN博客:blog.csdn.net/poechant

-