您好,欢迎访问三七文档
基础知识1.objc是扩充C的面向对象,开发macosx的编程语言。2.objc中的减号与加号①减号表示一个函数、或者方法或者消息的开始(在一个类的实例上被调用和实施)②加号表示其他的函数可以直接调用这个类中的方法,而不用创建这个类的实例3.NS开发包乔布斯的NextStep公司缩写,现今macos使用NS这套函数库4.#import作用如同#include,用于声明头文件。5.nil表示空指针,相当于java的null6.objc中使用字符串,前面要加上@,是因为在前面加上符号,编译器在编译的时候会在程序中给你留出位置,这样才能保证这个字符串不会丢失。(@是把C的字符串转成NSString的一个简写)7.开发objc类,需要创建一个头文件和一个实现文件①头文件(.h):包含类的实例变量的名称和类型、描述方法参数和返回值类型的方法签名;②实现文件(.m):包含这些方法的实现代码,以及对别的类不可见的,仅与实现本身相关的局部变量的声明和使用。8.九宫格解法原理;(右上解法)左出右写入、右出左写入、上出下写入、下出上写入、重排置下;9.iphone应用程序的项目基本结构classes:里面存放object-c类源代码文件(可以创建子文件夹来组织代码);othersources:存放除objective-c类之外的源代码文件;resources:包含应用程序中的非代码文件(因为应用程序只能在自己的沙盒中运行,不然找不到);Frameworks:特殊的库,可以存放库、框架、图像、声音等资源;Products:包含项目在编译时生成的应用程序(xxx.app);10.Info.plist文件里的bundleidentifier(束标识符)它是应用程序的唯一标识符,要始终配置,命名格式为:顶级Internet域+.+公司名称+.+应用名称;11.一个在代码里对nib中对象(UILabel、UITextField等)的引用被称为一个插座变量(outlet),用关键字IBOutlet标明(在头文件里);能够被nib中对象调用的方法称为动作(action),用关键字IBAction标明(在实现文件里)。12.在实现某个动作或是对象后要对这个动作或是对象后要使用release释放内存。13.IBOutlet输出口使用关键字IBOutlet来声明实例变量,并通过这个实例变量来引用nib中的对象;14.-(IBAction)doSomething:(id)sender控制某个对象执行某项动作通过关键字IBAction来声明,通过IBAction告诉interfaceBuilder,此方法是一个操作,且可以被某个控件触发;通常这个操作接受一个参数,该参数被定义为id,名称被指定为sender.(当需要传参数的时候就通过sender来传递,当不需要传参数的时候sender可以不写的);15.@property(retain,nonatomic)UILabletextArea;retain是通知编译器向分配给此属性的对象发送一个保留(retain)消息,确保属性的实例变量在被使用过程中不会被从内存中删除;nonatomic是创建一个互斥访问,避免读和写不同步(非原子性访问);通过这个属性声明访问来提高执行的效率;(原子性好比如我们去银行存钱,存进去的时候银行账户就会同时增加相应的数额,有一面失败就都回到原来的状态);16.内存管理理解①:程序A里有一段内存被成功申请完成之后,内存计数器就从0变为1(这个过程是alloc);②:然后程序B里也要使用这个内存,那么内存计数器从1变为2(这个过程是retain);③:紧接着程序A不需要这个内存了,那么程序A就把这个内存计数器减1(这个过程是release);④:当系统发现这个内存计数器变为0,那么就调用内存回收程序把这段内存回收(这个过程是dealloc);17.objc使用消息机制来调用方法,消息就是一个类或者对象可以执行的动作消息表达式:[对象或者类名字方法名字:参数序列];对象或者类名字:接收器,是消息的接收者;方法名字:参数序列:要发送的消息(要执行的动作);代码实现1.实现图像的移动NSTimer*timerArrow;-(IBAction)shoot{timerArrow=[NSTimerscheduledTimerWithTimeInterval:(0.03)target:selfselector:@selector(onTimerArrow)userInfo:nilrepeats:YES];}-(void)onTimerArrow{NSLog(@gogogo);//transform后的参数为图像移动的x,y的距离arrowView.transform=CGAffineTransformTranslate(arrowView.transform,0,-3.0);}2.实现图像的旋转可以有两种实现方式(UIImageView*imageView)①.使用CGAffineTransformMakeRotation类的类方法CGAffineTransformRotate方法。imageView.transform=CGAffineTransformRotate(imageView.transform,-0.02);②.使用CGAffineTransformMakeRotation类的类方法CGAffineTransformMakeRotate方法。floatangle=0;angle+=-0.02;imageView.transform=CGAffineTransformMakeRotation(angle);3.时间条的读取(UIProgressView*pg)intprogress=0;progress++;//时间条读取的速度,取决于时间的多少(此处为30秒的倒数[1/30])[pgsetProgress:progress*0.033];4.屏幕轻击、触摸事件①.点击次数//NSUInteger为无符号的整形NSUIntegernumTaps=[[touchesanyObject]tapCount];NSString*tapsMessage=[[NSStringalloc]initWithFormat:@%dtapsdetected,numTaps];②.触摸开始-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{}③.触摸移动-(void)touchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event{}④.触摸取消,通常为内存不够用的时候调用-(void)touchesCancelled:(NSSet*)toucheswithEvent:(UIEvent*)event{}⑤.触摸结束-(void)touchesEnded:(NSSet*)toucheswithEvent:(UIEvent*)event{}⑥.轻扫屏幕.hUILabel*label;CGPointmarker;.m-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{UITouch*touch=[touchesanyObject];marker=[touchlocationInView:self.view];}-(void)touchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event{UITouch*touch=[touchesanyObject];CGPointmoved=[touchlocationInView:self.view];CGFloatdeltaX=fabsf(marker.x-moved.x);CGFloatdeltaY=fabsf(marker.y-moved.y);if(deltaX=25&&deltaY=5){label.text=@yesyesyes;}elseif(deltaX=5&&deltaY=25){label.text=@nononono;}}5.循环执行一个方法可以有两种实现方法①.使用NSTimer类的相关方法。NSTimer*timer;intcount=0;-(void)do{NSLog(@Testtimer);count++;//10秒之后timer停止if(count=10){[timerinvalidate];}}-(void)viewDidLoad{timer=[NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(do)userInfo:nilrepeats:YES];}②.使用NSObject类的performSelector:withObject:afterDelay方法。-(void)do{NSLog(@Testtimer);[selfperformSelector:@selector(do)withObject:nilafterDelay:1];}-(void)viewDidLoad{[selfdo];}6.根据选择的按钮,将按钮的title传给标签并显示出来(UILable*status)NSString*title=[sendertitleForState:UIControlStateNormal];NSString*newText=[[NSStringalloc]initWithFormate:#youpressthe%@,title];status.text=newText;[newTextrelease];7.点击done关闭键盘(UITextField*nameField)-(IBAction)nameFieldDoneEditing:(id)sender;-(IBAction)nameFieldDoneEditing:(id)sender{[senderresignFirstResponder];}点击屏幕关闭键盘-(IBAction)backgroundClick:(id)sender;-(IBAction)backgroundClick:(id)sender{[nameFieldresignFirstResponder];}8.通过UISegmentedControl控制UIView(UIView*switch)显示或是隐藏的状态;-(IBAction)toggleShowHide:(id)sender{UISegmentedControl*segmentedControl=(UISegmentedControl*)sender;//查询uisegmentcontrol的值NSIntegersegment=segmentedControl.selectedSegmentIndex;if(segment==0)[switchViewsetHidden:NO];else[switchViewsetHidden:YES];}9.UISwitch(UISwitch*soundSwitch)开关的控制-(IBAction)switchChanged:(id)sender{UISwitch*whichSwitch=(UISwitch*)sender;BOOLsetting=whichSwitch.isOn;[SoundSwitchsetOn:settinganimated:YES];}10.操作表使用操作表必须符合UIActionSheetDelegate协议(在.h头文件里的UIViewController后添加);同时操作表是模式化的(模式化就是程序显示操作表时,程序的其他任何部分都是不可操作的,必须在操作表上作出选择,才可以执行其他的操作);-(IBAction)doSomething:(id)sender{UIActi
本文标题:iphone试题
链接地址:https://www.777doc.com/doc-2877656 .html