1、第一个OC程序


第一个程序式例子


#import<Foundation/Foundation.h>                 import的用途:1、拷贝文件的内容

                                                              2、可以自动防止文件的内容被重复拷贝


//OC程序的入口:main函数

int main (int argc,constchar * argv [ ])


{

    @autoreleasepool {

        NSLog (@"programming is  fun!");         // NSLog 输出内容会自动换行

    }


    

    

   return0;


}


1、@autoreleasepool,在java中,有垃圾回收机制,系统会自动回收不再使用的对象,而OC是不支持垃圾回收的,需要开发人员编写代码来释放对象所占的内存。

   @autoreleasepool{},这是跟内存管理有关,暂时不用理解它的意思,现阶段只需要记住,以后OC代码都会写在@autoreleaspool的{}内部。


2、  NSLog,NSLog是一个日志输出函数,它可以将传入的OC字符串参数输出到控制台上。

     函数@"programming is  fun!"是一个OC字符串,所有OC字符串前面都有个@


3、Foundation:Foundation框架

   Foundation.h:Foundation框架头文件,Foundation.h有NSLog函数的声明,只要包含Foundation框架的主头文件,就可以使用这个框架的东西


4、#import<...>表示包含系统自带的文件,#import"..."表示开发人员自己创建的文件


5、main是一个特殊名称,用于准确地表示程序将在何处开始执行。main之前保留字int指定main返回的值的类型,该值为整型。


6、int argc, const char * argv [] ,这些与名为命令行参数内容有关,后面要弄懂它。


7、一条语句就是一个以分号结束的表达式,每个OC程序语句必须使用分号结束。



#import<Foundation/Foundation.h>


int main (int argc,constchar * argv [])


{

    @autoreleasepool {

       int  sum;

             ------------------------ 一般在这个定义的下面留一空行,以便在视觉上区分函数的变量定义和程序                                       语句,这是一种风格问题,有时候在程序中添加单个空白可使 程序可读性更强

                                                    

        

       sum =50 +25;

       NSLog(@"sum=%i",sum);        //(@"sum=%i",sum)  这里有两个参数,这些参数用逗号隔开

  }


   

   return0;


}







iOS中创建一个基本的应用程序,用于每天追踪用户的步数,并保存数据,你可以使用Core Data来持久化数据,结合HealthKit获取实时步数。这里提供一个简化的示例代码: 首先,确保导入所需的框架: ```objective-c #import <UIKit/UIKit.h> #import <HealthKit/HealthKit.h> #import <CoreData/CoreData.h> ``` 创建一个模型(Model)文件,例如`StepsManagedObject`,包含属性如`date`和`steps`: ```swift // 如果你是Swift开发者,这里用Swift写 struct StepsManagedObject { @NSManaged var date: Date @NSManaged var steps: Int16 } // Objective-C版 @interface StepsManagedObject : NSManagedObject @property (nonatomic, strong, readonly) NSDate *date; @property (nonatomic, assign) short steps; @end ``` 然后在`AppDelegate.m`中设置HealthKit并初始化Core Data: ```objective-c - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 开启HealthKit权限 [self requestHealthKitPermission]; // 初始化Core Data [self configureCoreData]; return YES; } - (void)requestHealthKitPermission { // 请求步数读取权限 HKHealthStore *healthStore = [[HKHealthStore alloc] init]; [healthStore requestAuthorizationToShareTypes:nil readTypes:@[HKObjectTypeStepCount] completion:^(BOOL granted, NSError * _Nullable error) { if (granted) { self.healthStore = healthStore; } }]; } - (void)configureCoreData { // ...省略Core Data配置代码 } ``` 在某个视图控制器里实现步数的获取和存储: ```objective-c - (void)fetchDailySteps { NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"StepsManagedObject"]; fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]]; NSError *error = nil; NSArray *stepsObjects = [self.coreData.managedObjectContext executeFetchRequest:fetchRequest error:&error]; if (!error) { // 如果存在当天的步数,更新;否则添加新的 if ([stepsObjects count]) { StepsManagedObject *lastStep = stepsObjects.lastObject; if ([lastStep.date isEqualToDate:[NSDate date]]) { // 更新步数 lastStep.steps += [self getTodayStepsFromHealthKit]; } else { // 添加新的条目 StepsManagedObject *newStep = [NSEntityDescription insertNewObjectForEntityForName:@"StepsManagedObject" inManagedObjectContext:self.coreData.managedObjectContext]; newStep.date = [NSDate date]; newStep.steps = [self getTodayStepsFromHealthKit]; } } else { // 如果第一天,直接添加 StepsManagedObject *newStep = [NSEntityDescription insertNewObjectForEntityForName:@"StepsManagedObject" inManagedObjectContext:self.coreData.persistentContainer.viewContext]; newStep.date = [NSDate date]; newStep.steps = [self getTodayStepsFromHealthKit]; } // 保存到Core Data NSError *saveError = nil; if (![self.coreData.saveContext save:&saveError]) { NSLog(@"Error saving steps: %@", saveError); } } else { NSLog(@"Error fetching steps: %@", error); } } - (NSInteger)getTodayStepsFromHealthKit { // 这里使用HealthKit获取今天的步数,代码类似上文的getStepsForDate:方法 // ... return steps; // 返回步数 } ``` 这只是一个基础的示例,实际项目中可能需要添加更多的错误处理和UI交互。同时请注意,由于篇幅原因,`getTodayStepsFromHealthKit`方法未给出完整细节,你需要根据HealthKit的API来获取步数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值