Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

iOS菜鸟笔记3:Hello,iPhone!

$
0
0

Hello,iPhone

先从一个图形界面的Demo开始,记录下一个iOS项目的创建和最简单功能的实现。

新建一个项目

当前最新Xcode版本为8.2.1,包含了Swift3以及iOS 10.2、watchOS 3.1、tvOS 10.1的SDK。

创建一个新的Single View的工程,开发语言选择Objective-C。
Xcode会为你生成下图中的文件。
这里写图片描述

应用的主入口

Supporting Files下面有个main.m文件,这就是主入口了。

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

它的主要功能就是调用AppDelegate类。

应用委托类以及app的生命周期

AppDelegate类是应用程序委托对象(要注意委托与代理是不同的),其继承的一系列方法在应用程序的不同阶段会被调用。所以,我们先来了解一下iOS应用的生命周期。

1、Not Running:应用没有运行或被系统终止。
2、Inactive:正在进入前台,但还不能接受事件处理的状态。
3、Active:通常意义的活动状态。
4、Background:后台状态(可以后台运行)。
5、Suspend:挂起,冻结状态,当系统内存不够时将其回收。
这里写图片描述

再来说说回调函数:
willFinishLaunchingWithOptions:—程序加载时首先要执行的函数

didFinishLaunchingWithOptions:—程序显示前的初始化工作

applicationDidBecomeActive:—进入前台并处于活动状态,此时可以做恢复UI的工作

applicationWillResignActive:—程序即将进入非活动状态,此时可以做保存UI的工作

applicationDidEnterBackground:—程序进入后台状态,可以保存数据和释放资源等工作。

applicationWillEnterForeground:—程序进入前台但非活动状态,此时可以恢复数据。

applicationWillTerminate:—程序被终止时调用,可以做释放资源等动作。但程序挂起后不会调用(This method is not called if your app is suspended)。

ViewController类、Main.storyboard与MVC模式

模型、视图、控制器模式:简单的说,就是控制器作为连接视图和模型的中介,视图上显示的内容取决于模型,模型的数据更改了,视图也会随之改变;视图上有用户的输入,模型也会相应改变数据。

ViewController继承自UIViewController,其是所有控制器的根类。
UIView是视图和控件的根类,storyboard是承载视图的地方。
模型可以用一个模型对象去封装,也可以直接做ViewController中处理。

Hello,iPhone!

做一个小demo:点击界面上一个按钮,界面上显示Hello,iPhone!
1、单击storyboard,在View设计界面上添加一个label和一个button(右下角对象库object library)。
2、通过辅助编辑器(Assistant editor),按住ctrl拖拽,将上述两个控件连接到ViewController中。
Label创建一个outlet

@property (weak, nonatomic) IBOutlet UILabel *HelloLabel;

Button创建一个action,直接在点击事件中改变Label的值

- (IBAction)onClick:(id)sender {
    self.HelloLabel.text = @"Hello, iPhone!";
}

用源码方式打开Main.storyboard,可以找到我们拖拽操作的痕迹。
先来看看Label的连接这样的

<label fixedFrame="YES" text="菜鸟笔记" id="Fhn-S6-EU5">

<connections>
     <outlet property="HelloLabel" destination="Fhn-S6-EU5" id="oP3-Bb-3tY"/>
</connections>

再来看看Button,connections的destination恰恰是ViewController的id

<button lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VKk-kX-z7o">
    <rect key="frame" x="114" y="329" width="129" height="77"/>
    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    <state key="normal" title="Hello">
        <color key="titleShadowColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
    </state>
    <connections>
        <action selector="onClick:" destination="BYZ-38-t0r" eventType="touchUpInside" id="zNx-9T-eAY"/>
    </connections>
</button>

<viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">    

运行起来吧,效果如下。
这里写图片描述

参考:
1、生命周期:https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html#//apple_ref/doc/uid/TP40007072-CH2-SW1
2、http://www.cnblogs.com/QianChia/p/5771082.html

作者:lincyang 发表于2017/3/23 21:45:37 原文链接
阅读:185 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles