1.Hello world
今天创建了自己的笔记,记录一下自己学习ios过程中学到的一些知识。
Objective-c在学习的前期要比其他语言简单一些(我目前好像还处于前期),因为什么呢?
1.个人感觉Xcode就比其他的编辑器好用得多,很简洁。
2.objective-c和比C++读起来舒服很多,和java差不多。
3.苹果提供的工具很到位,需求的大部分东西都可以用原生的实现,其他的比较难的也有牛人提供了第三方,只需要使用cocoapod导入到工程就可以了。
使用Xcode创建一个工程,create a new Xcode project;
选择一个ios中第一个Single View App ,SingleView的意思就是,开局一个ViewController,之后在这个ViewController中编辑自己的界面。命名为helloworldTest.
创建好工程后,可以看到里面的文件有
1.appdelegate头文件和源文件
2.viewController头文件和源文件
3.Main.StoryBoard文件和LaunchScreen.storyboard文件
4.Info.plist文件
5.main.m文件
6.一个Assets.xcassets文件夹
解释一下这些文件的作用:
1.appdelegate文件:appdelegate里面放的是系统提供给我们的一些代理函数,怎么个代理法呢,比如说,App启动了,系统完成了自身的初始化操作,可以开始执行用户的代码了,这个时候就开始调用:- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions这个函数来执行用户操作,在实际开发中,这里面通常可以用来规定App的根viewController,也可以预加载一些服务,比如启动注册Google地图的服务等。
再比如说,当用户点击了home键,程序进入后台,这个时候会调用- (void)applicationDidEnterBackground:(UIApplication*)application函数,我们可以把一些需要释放的空间释放掉,或者把正在播放的播放器停止播放。与之相应的,用户再次打开程序,程序从后台进入前台,会调用:- (void)applicationWillEnterForeground:(UIApplication*)application这个函数,在这个函数中我们可能需要判断一下在线状态,如果不在线,可能需要重新登录到服务器。
总之,appdelegate就是app的delegate,在appdelegate中,我们可以在app运行在系统的某个时机进行我们想要进行的操作,这个时机也叫做生命周期,通常appdelegate有生命周期,viewController也有声明周期,之后会介绍使用两个生命周期输出Helloworld。
2.viewController头文件和源文件,这个文件是系统默认的viewController,一般情况下,是不使用他的,当app运行后,没有在appdelegate中规定mainwindow的时候系统会找到这个viewController,并把他放到mainWindow上。
3.Main.storyboard和launchStoryBoard文件,storyboard是Xcode提供的一种界面编辑方式,许多编辑器都提供这种拖拽控件的编辑方式,然而一般都不会使用(外国人比较喜欢),因为对比较小的,简单的工程这种方法会比较快捷,但是,工程复杂一些,这种方法就不适用了。虽然我们不用他编辑界面,但是这两个系统的storyboard还是有用的,比如在国际化的时候,会选择一个storyboard做国际化标准,应该在Localization中把语言勾选上。
4.info.plist文件,这个文件很重要,是App的属性配置文件,有时候我们需要在里面添加选项,比如说:在我们需要使用一些与隐私相关的功能时,如果我们需要使用用户的相册,照相机,麦克风或者是定位,我们就需要在这个文件中声明一下,这样系统就会在需要使用的时候提醒用户。
5.main.m文件,程序的入口,开发过程中都不需要碰它。
6.Assets.xcasset文件夹,一个装资源文件的文件夹,比如,按钮或Imageview上显示出的图片,就可以放在这个文件夹里面。
说好的helloworld,打开AppDelegate.m文件,在它提供的第一个函数也就是didFinishLaunchingWithOptions函数中写:NSLog(@"Hello world");然后在左上角的选项栏中任意选择一个模拟器:(iphoneX,免费用就用个好点的吧)点击左边的三角形运行程序,好了,等一会模拟器开启了,就出现一个白屏,右下角的控制台输出Hello world。
当然,这个helloworld似乎并没有在页面上起作用,打开viewController,看到两个代理函数:viewDidLoad和另外一个,我们在这个viewDidLoad中为页面添加一个Label用来显示Helloworld,在函数中写如下代码:
UILabel*helloWorldLabel = [[UILabelalloc]initWithFrame:CGRectMake(0,0,100,100)];//创建一个label,0'0'100'100分别对应于label的x,y,wide,height. x,y都是0意味着这个label在左上角,100,100意味着这个label长宽都是100,
[self.viewaddSubview:helloWorldLabel];//把Label添加到viewController的view上面
helloWorldLabel.text=@"Hello world!";//设置label显示的文字是helloworld
点击左上角运行,左上角@“hello world”。
第一个helloworld是在整个app的生命周期中输出的,第二个helloworld是在默认的viewController生命周期中输出的,当这个viewController加载出来之后会在上面加一个label,label上显示helloworld。如果两个都存在的话第一个helloworld会先输出,第二个再输出。