‘壹’ 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 搞定了。