『壹』 objective-c代碼這樣寫有什麼特含義嗎
oc 是c的超集, 要保留c 的語法,然後在c的語法上擴展,特殊意義應該談不上
『貳』 objective-c 源碼轉 C# 源碼 謝謝
public string Encode(string DataString, string EncodeString)
{
int[] intArray = new int[256];
char[] charArray = new char[256];
int int_j = 0;
int int_i = 0;
for (int i = 0; i < 256; i++)
{
intArray[i] = i;
}
int_j = 1;
for (short i = 0; i < 256; i++)
{
char c = EncodeString.ToCharArray()[i % EncodeString.Length];
charArray[i] = c;
}
int_j = 0;
for (int i = 0; i < 255; i++)
{
int _int_a = intArray[i];
char _char_a = charArray[i];
int_j = (int_j + _int_a + _char_a) % 256;
int _int_tmp = intArray[i];
intArray[i] = intArray[int_j];
intArray[int_j] = _int_tmp;
}
int_j = 0;
int_i = 0;
string value = DataString;
for (short x = 0; x < DataString.Length; x++)
{
int_i = (int_i + 1) % 256;
int _int_is = intArray[int_i];
int_j = (int_j + _int_is) % 256;
int _int_is_i = intArray[int_i];
int _int_is_j = intArray[int_j];
int _int_t = (_int_is_i + _int_is_j) % 256;
int _int_iY = intArray[_int_t];
char _char_c = DataString.ToCharArray()[x];
char _char_y = (char)(_char_c ^ _int_iY);
char[] _char_list = value.ToCharArray();
_char_list[x] = _char_y;
String _str = System.Text.Encoding.UTF8.GetString(System.Text.Encoding.UTF8.GetBytes(_char_list));
//value = [value :NSMakeRange(x, 1) withString:[NSString stringWithCharacters:&_char_y length:1]];
value = _str;
}
return value;
}
『叄』 小白跪求一簡單objective c 源代碼如何計算自己到如今活了多少歲,涉及到如何獲取現在時間和定義出生時間
nsgregoriancalendar出現紅線是因為過期了,
用這個NSCalendarIdentifierGregorian代替。你可以在xcode里跳轉到它的定義裡面看,有說明。
計算年齡的代碼如下:
//
//ViewController.m
//Age
//
//Createdby黃磊on14/12/26.
//Copyright(c)2014年HL.Allrightsreserved.
//
#import"ViewController.h"
@interfaceViewController()
@property(nonatomic)UILabel*ageLabel;
@property(nonatomic)UIView*settingAgeView;
@end
@implementationViewController
@synthesizeageLabel;
-(void)viewDidLoad{
[superviewDidLoad];
//,typicallyfromanib.
}
-(void)viewDidAppear:(BOOL)animated{
//顯示年齡
ageLabel=[[UILabelalloc]initWithFrame:CGRectMake(200,200,100,100)];
ageLabel.text=@"年齡:-";
[self.viewaddSubview:ageLabel];
//日期選擇
UIDatePicker*datePicker=[[UIDatePickeralloc]initWithFrame:CGRectMake(0,0,200,200)];
[datePickersetMaximumDate:[NSDatedate]];
datePicker.datePickerMode=UIDatePickerModeDate;
[datePickeraddTarget:selfaction:@selector(dateChanged:)forControlEvents:UIControlEventValueChanged];
[self.viewaddSubview:datePicker];
}
-(void)didReceiveMemoryWarning{
[superdidReceiveMemoryWarning];
//.
}
-(void)dateChanged:(id)sender{
//現在的時間
NSDate*nowDate=[NSDatedate];
NSDateComponents*nowComponents=[selfgetDetailByDate:nowDate];
NSIntegernowYear=nowComponents.year;
//出生日期
NSDateComponents*birthDayComponents=[selfgetDetailByDate:[(UIDatePicker*)senderdate]];
NSIntegerbirthDayYear=birthDayComponents.year;
intage=(int)(nowYear-birthDayYear);
ageLabel.text=[NSStringstringWithFormat:@"年齡:%d",age];
}
-(NSDateComponents*)getDetailByDate:(NSDate*)date
{
NSCalendar*calendar=[[NSCalendaralloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents*comps=[[NSDateComponentsalloc]init];
NSIntegerunitFlags=NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay;
comps=[calendarcomponents:unitFlagsfromDate:date];
returncomps;
}
@end
『肆』 如何寫出高質量的Objective-C代碼系列
1、避免全局變數,因為全局變數容易發生名稱上的沖突,可維護性不好。
a,使用命名空間
b,使用閉包
c,在函數內部使用var聲明
2、編寫可維護的代碼
a.可讀性
b.連續性
c.預見性
d.看起來是一個人寫的
e.有文檔
3、不要擴展內建的原型
擴展原型的構造函數,可以提供一些很強大的功能,但是有時候他太強大了。
有時候你會去擴展Object(),Array(),Fucntion()的原型方法,這樣會導致可維護性的問題,因為這會讓你的代碼的移植性變差。其他的開發人員使用你的代碼的時候,可能只需要原生的方法,並不需要額外的功能。
另外,你添加進去的方法,如果在循環的時候沒有使用hasOwnProperty方法就會被遍歷出來,這會讓人很迷惑。
所以,最好還是不要擴展基本的對象。除非是下面的情況:
a.你確定在將來根據ECMAScript規范,瀏覽器會添加相應的原型方法,那麼是可以的,你只不過是提前實現了這個功能。
b.你確定的你要實現的方法不存在–或許有時候在代碼的其他的地方實現了,或者有的瀏覽器支持,這都是不行的。
c.有非常清晰的文檔,並且與團隊成員溝通過
4、避免隱藏的類型轉換
Javascript在你比較兩個變數的時候會進行類型的轉換,這就是為什麼 false == 0或者」" == 0會返回true。
為了避免這種隱藏的類型轉換帶來的迷惑,最好使用===或者!==操作符來比較:
5、避免使用eval()
如果在你的代碼中使用eval(),那麼要記住」eval() is evil」。這個方法會將傳入的字元串當做js代碼來執行。如果代碼是在運行前就確定的,那麼沒有必要使用eval()。如果代碼是在運行時動態確定的,那麼也有其他更安全的辦法。例如使用方括弧形式訪問元素的屬性:
// antipattern
var property = "name";
alert(eval("obj." + property));
// preferred
var property = "name";
alert(obj[property]);
使用eval()還有安全問題,比如運行網路上的一段代碼,而這段代碼又被別人篡改了。在處理Ajax請求返回的JSON數據的時候,最好還是使用瀏覽器內建的處理方法,如果對於低端的瀏覽器不支持的,可以從JSON.org上下載對應的處理庫。
6、使用parseInt()轉換處理數字
使用parseInt()你可以將字元串轉為數字。這個方法支持第二個表示進制的參數,常常被忽略。問題常常在處理一段以0開始的字元串的時候。在ECMAS3標准中,以0開始表示八進制,但是在ES5中又改了,所以為了避免麻煩,最好還是標明第二個參數。
7、編碼規范
編碼的時候遵循一定的規范,可以讓代碼增強可移植性,並且更加便於閱讀和理解。加入團隊的新人,在閱讀了代碼規范之後,可以更加快速的溶入團隊,並理解其他人員開發的代碼。
8、縮進
代碼如果沒有縮進,那基本上沒法閱讀了。比這更糟的是不規范的縮進,看著好像縮進了,但是亂七八糟摸不著頭腦。所以縮進的使用必須規范。團隊遵循統一的規范
9、大括弧
應該使用大括弧,尤其在那些可用可不用的地方,如果你的if語句或者for循環只有一句話,那麼大括弧不是必須的,但是這種時候最好用大括弧。這可以讓代碼保持一致,並且便於升級。
10、命名規范
可以提高代碼移植性和可維護性的一個方面是命名規范。也就是說,在取變數名的時候總是採取一貫的做法。
11、寫注釋
必須給代碼寫注釋,就算它看起來不會被別人接手。有時候,研究完一個問題,然後你看著代碼覺得那是顯而易見的,但是過一兩周之後回頭再看,你也會摸不著頭腦的。
『伍』 ios 系統用Objective-C 在sdk上開發一個小型計算器,要求實現基本的四則運算即可,帶源碼和分析
#import <UIKit/UIKit.h>
@interface LEViewController : UIViewController
{
double a;
double b;
double c;
UITextField *atextField;
UILabel *aLabel;
NSString *str;
NSMutableString *str1;
}
@end
#import "LEViewController.h"
@interface LEViewController ()
@end
@implementation LEViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
str1=[[NSMutableString alloc]init ];}
return self;
}
/**
*@控制器入口
*
*/
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.view setBackgroundColor:[UIColor blueColor] ];
aLabel= [[UILabel alloc]initWithFrame:CGRectMake(100, 20, 80, 40)];
[aLabel setText:@" 計算器"];
[self.view addSubview:aLabel];
atextField =[[UITextField alloc]initWithFrame:CGRectMake(0, 60, 320, 50)];
[atextField setBorderStyle:UITextBorderStyleRoundedRect];
[self.view addSubview:atextField];
UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(20, 380, 270, 60)];
[button setTitle:@"=" forState:UIControlStateNormal];
[button addTarget:self action:@selector(go) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
UIButton *button1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button1 setFrame:CGRectMake(20, 110, 60, 60)];
[button1 setTitle:@"1" forState:UIControlStateNormal];
[button1 addTarget:self action:@selector(one) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button1];
UIButton *button2=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button2 setFrame:CGRectMake(90, 110, 60, 60)];
[button2 setTitle:@"2" forState:UIControlStateNormal];
[button2 addTarget:self action:@selector(two) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button2];
UIButton *button3=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button3 setFrame:CGRectMake(160, 110, 60, 60)];
[button3 setTitle:@"3" forState:UIControlStateNormal];
[button3 addTarget:self action:@selector(three) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button3];
UIButton *button4=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button4 setFrame:CGRectMake(20, 170, 60, 60)];
[button4 setTitle:@"4" forState:UIControlStateNormal];
[button4 addTarget:self action:@selector(four) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button4];
UIButton *button5=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button5 setFrame:CGRectMake(90, 170, 60, 60)];
[button5 setTitle:@"5" forState:UIControlStateNormal];
[button5 addTarget:self action:@selector(five) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button5];
UIButton *button6=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button6 setFrame:CGRectMake(160, 170, 60, 60)];
[button6 setTitle:@"6" forState:UIControlStateNormal];
[button6 addTarget:self action:@selector(six) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button6];
UIButton *button7=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button7 setFrame:CGRectMake(20, 240, 60, 60)];
[button7 setTitle:@"7" forState:UIControlStateNormal];
[button7 addTarget:self action:@selector(seven) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button7];
UIButton *button8=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button8 setFrame:CGRectMake(90, 240, 60, 60)];
[button8 setTitle:@"8" forState:UIControlStateNormal];
[button8 addTarget:self action:@selector(eight) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button8];
UIButton *button9=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button9 setFrame:CGRectMake(160, 240, 60, 60)];
[button9 setTitle:@"9" forState:UIControlStateNormal];
[button9 addTarget:self action:@selector(nine) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button9];
UIButton *button10=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button10 setFrame:CGRectMake(20, 310, 60, 60)];
[button10 setTitle:@"0" forState:UIControlStateNormal];
[button10 addTarget:self action:@selector(zero) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button10];
UIButton *button11=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button11 setFrame:CGRectMake(90, 310, 60, 60)];
[button11 setTitle:@"." forState:UIControlStateNormal];
[button11 addTarget:self action:@selector(dian) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button11];
UIButton *button12=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button12 setFrame:CGRectMake(230, 240, 60, 60)];
[button12 setTitle:@"*" forState:UIControlStateNormal];
[button12 addTarget:self action:@selector(chen) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button12];
UIButton *button13=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button13 setFrame:CGRectMake(160, 310, 60, 60)];
[button13 setTitle:@"AC" forState:UIControlStateNormal];
[button13 addTarget:self action:@selector(ac) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button13];
UIButton *button14=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button14 setFrame:CGRectMake(230, 310, 60, 60)];
[button14 setTitle:@"/" forState:UIControlStateNormal];
[button14 addTarget:self action:@selector(chu) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button14];
UIButton *button15=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button15 setFrame:CGRectMake(230, 110, 60, 60)];
[button15 setTitle:@"+" forState:UIControlStateNormal];
[button15 addTarget:self action:@selector(add) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button15];
UIButton *button16=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button16 setFrame:CGRectMake(230, 170, 60, 60)];
[button16 setTitle:@"-" forState:UIControlStateNormal];
[button16 addTarget:self action:@selector(jian) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button16];
}
-(void)one
{
str =@"1";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];
}
-(void)two
{
str =@"2";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];
}
-(void)three
{
str =@"3";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];
}
-(void)four
{
str =@"4";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];}
-(void)five
{
str =@"5";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];}
-(void)six
{
str =@"6";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];}
-(void)seven
{
str =@"7";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];}
-(void)eight
{
str =@"8";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];}
-(void)nine
{
str =@"9";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];}
-(void)add
{
str =@"+";
[str1 appendString:str];
atextField.text=str1;
b='1';c=a;
a=[str1 doubleValue];
[str1 release];
str1=[[NSMutableString alloc] init];}
-(void)jian
{
str =@"-";
[str1 appendString:str];
atextField.text=str1;
b='2';c=a;
a=[str1 doubleValue];
[str1 release];
str1=[[NSMutableString alloc] init];}
-(void)chen
{
str =@"*";
[str1 appendString:str];
atextField.text=str1;
b='3';c=a;
a=[str1 doubleValue];
[str1 release];
str1=[[NSMutableString alloc] init];}
-(void)chu
{
str =@"/";
[str1 appendString:str];
atextField.text=str1;
b='4';c=a;
a=[str1 doubleValue];
[str1 release];
str1=[[NSMutableString alloc] init];}
-(void)dian
{
str =@".";
[str1 appendString:str];
atextField.text=str1;
a=[str1 doubleValue];}
-(void)ac
{
str =@"0";
atextField.text=@"0";}
-(void)zero
{
str =@"0";
[str1 appendString:str];
atextField.text=str1;}
-(void)go
{if (b=='1') {<br/><p> atextField.text=[NSString stringWithFormat:@"%f",(a+c)];}
if (b=='2') {
atextField.text=[NSString stringWithFormat:@"%f",(c-a)];}
if (b=='3') {
atextField.text=[NSString stringWithFormat:@"%f",(a*c)];}
if (b=='4') {
atextField.text=[NSString stringWithFormat:@"%f",(a/c)];}
if (b=='5') {
atextField.text=[NSString stringWithFormat:@"0"];}
[str1 release];
str1=[[NSMutableString alloc] init];}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (BOOL):(UIInterfaceOrientation)interfaceOrientation
{return (interfaceOrientation == );}
@end
『陸』 如何分析objective-c這門語言
Objective-C是非常「實際」的語言。它用一個很小的、用C寫成的運行庫,使得應用程序的大小增加很少,與此相比,大部分OO系統需要極大的運行時虛擬機來執行。ObjC寫成的程序通常不會比其源代碼和庫(通常無需包含在軟體發行版本中)大太多,不會像Smalltalk系統,即使只是打開一個窗口也需要大量的容量。由於Obj-C的動態類型特徵,Obj-C不能對方法進行內聯一類的優化,使得Obj-C的應用程序一般比類似的C或C++程序更大。
Obj-C可以在現存C編譯器基礎上實現(在GCC中,Obj-C最初作為預處理器引入,後來作為模塊存在),而不需要編寫一個全新的編譯器。這個特性使得Obj-C能利用大量現存的C代碼、庫、工具和編程思想等資源。現存C庫可以用Obj-C包裝器來提供一個Obj-C使用的OO風格界麵包裝。
『柒』 如何看objective-c 庫 源代碼
如果是系統庫,估計是沒有源碼看的。
但是可以通過各種針對測試來驗明系統庫的執行機制。另外也可以對官方手冊仔細研讀,提高對系統庫的理解。
『捌』 請問這段objective-c代碼是什麼意思
autoresizingMask是UIView(UIButton是UIView的子類)的一個屬性,該屬性是用來控制控制項的自適應。
視圖的右邊界將隨著父視圖寬度的變化而按比例進行調整。
視圖的底邊界將隨著父視圖高度的變化而按比例進行調整。
用「|」關聯的作用是多個枚舉同時設置
你的這個button設置這個屬性作用是可以保證旋轉屏幕時居上居下位置不變
對於ios6高度增加對此屬性的支持如何本人未鑒定過,你可以自行測試下觀看效果。
『玖』 Objective-C的原生代碼
#import<Foundation/Foundation.h>intmain(intargc,constchar*argv[]){NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]init];//insertcodehere...NSLog(@"Hello,World!");[pooldrain];return0;}以上是Xcode開發環境下默認的.m文件內容,就是原生的Hello World範例代碼。
關於hello world的更多擴展內容
在 Objective-C 中 #import 和 #include 的區別
在 Objective-C 中,#import 被當成 #include 指令的改良版本來使用。除此之外,#import 確定一個文 件只能被導入一次,這使你在遞歸包含中不會出現問題。使用哪一個還是由你來決定。一般來說,在導入 Objective-C 頭文件的時候使用 #import,包含 C 頭文件時使用 #include。
『拾』 如何在Windows上編譯Objective-C
1、安裝GNUstep
GNUstep Windows Installer提供了Windows平台下的Object-C的模擬開發環境,一共有四個軟體包,其中GNUstep System和GNUstep Core是必裝的,GNUstep Devel和Cairo Backend是選裝的。只安裝前兩個就夠了。
2、編寫Objective-C代碼
安裝完成後,在開始菜單里的GNUstep選項里執行shell,就能打開命令行。直接在Windows里進入C:/GNUstep/home/Administrator(我的是Administrator,可能有的不一樣)目錄,在這里用你喜歡的工具(現在UltraEdit和Notepad++編輯器好像可以代碼高亮)編寫Object-C程序。
如:HelloWorld.m
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello World!");
[pool drain];
return 0;
}
3、配置環境變數
這一步很重要。GNUstep.sh是用來設置GNUstep開發環境變數的,如果沒有執行,就會有很多頭文件,庫文件,命令找不到
在一個目錄里寫好了源代碼以後,編寫一個make配置文件,名字必須叫GNUmakefile,內容是
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME=Test
Test_OBJC_FILES=HelloWorld.m
include $(GNUSTEP_MAKEFILES)/tool.make
可以修改上面的黑體部分
然後就是
make
命令運行成功就可以看到新增了一個obj目錄,裡面就有你要的可執行文件和.o文件。
OK 搞定了。