问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Mac开发与iOS开发有哪些不同

发布网友 发布时间:2022-03-04 04:43

我来回答

2个回答

热心网友 时间:2022-03-04 06:12

Mac程序的开发,基本上就是比iOS上更原始的版本,很凌乱,另外就是窗口什么的区别最大

以下是我之前记得笔记,在Xcode里写的,不太好看。。。

//
// ViewController.m
// mac
//
// Created by 国栋 on 16/1/4.
// Copyright (c) 2016年 GD. All rights reserved.
//

#import "ViewController.h"

@implementation ViewController

#pragma mark 编写Mac程序和iOS程序主要的不同
- (void)viewDidLoad {
[super viewDidLoad];
#pragma mark 坐标系不同

#pragma mark 缺少一些组合方法
//iOS是在OS X系统的基础上开发的,所以有很多更方便的地方,但Mac的框架不提供!
//比如,iOS中有一些常用的方法,Mac中没有,比如
//iOS中UIButton 有addTarget:<#(id)#> action:<#(SEL)#>
forControlEvents:<#(UIControlEvents)#>方法,但NSButton只能一项的设置
/**如果Mac里没有某个组合的方法,可以试试拆开用!**/
NSButton *button=[[NSButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
button.target=self;
button.action=@selector(click);
[self.view addSubview:button];

#pragma mark 没有Label控件
//Label控件是用TextFiled实现的
//label.enabled=NO;
//label.bordered=NO;
//label.selectable=YES;
#pragma mark 没有bounds,center
#pragma mark NSView没有背景颜色,但NSClipView和其它有些控件有
[self.view setWantsLayer:YES];
[self.view.layer setBackgroundColor:[NSColor blueColor].CGColor];

#pragma mark imagename方法只适用于图片文件在包里
//根据路径获取图片[[NSImage alloc]initByReferencingFile:@"/Users/guodong/Desktop/Coding/mac/mac/636b17fb1f.png"];
#pragma mark ImageView可以设定animates editable属性
//可以播放动图,可以删除,可以拖放图片上去
#pragma mark NSColorWell enable=yes 可以调色
#pragma mark NSScrollView默认不接受鼠标事件,用sv.contentView.frame调整内容视图的位置和大小
#pragma mark NSWindow
//Mac程序是可以有多个window的!
//设置当前的主窗口
NSApplication *app=[NSApplication sharedApplication];//获取程序对象

NSLog(@"%@",app.keyWindow);//keyWindow和mainWindow经常是同一个window,它们在程序刚加载的时
候是还没加载的,所以不能在viewDidLoad方法中设置!当app处于不活动的状态或不能接受键盘值时,也可能是空的
NSLog(@"%@",app.mainWindow);
NSWindow *window=app.keyWindow;
window.alphaValue=1;//设置窗口的透明度
window.backgroundColor=[NSColor clearColor];//设置背景颜色为透明
[window setStyleMask:1];//设置窗口的风格是没有边框的,也可以在故事板中的窗口属性中调
[window setFrame:CGRectMake(100, 100, 500, 500) display:YES animate:YES];//移动窗口,立即刷新,动画效果
//创建一个新的窗口,注意窗口控制器应当是个全局的指针,否则窗口会立即被销毁!
NSWindow *new=[[NSWindow alloc]initWithContentRect:CGRectMake(100,
100, 300, 300) styleMask:1 backing:NSBackingStoreRetained defer:NO];
new.backgroundColor=[NSColor redColor];
NSWindowController *wc=[[NSWindowController alloc]initWithWindow:new];
[wc showWindow:new];
[new setLevel:10];//设置窗口显示的优先级
#pragma mark Mac开发中,cell十分常见
//大概是在OS X简化为iOS的过程中,很多控件被合并,简化了。
//OS X中很多控件都有(类型的后缀)为cell的子控件,通常能调整title什么的
//总之,大多数控件都是组合成的,而且子控件都暴露在外面,非常麻烦
#pragma mark NSOpenPanel 弹出选择文件用的控件
NSOpenPanel *openPanel=[NSOpenPanel openPanel];//获取NSOpenPanel对象
//设置
[openPanel setCanChooseFiles:YES];
[openPanel setCanChooseDirectories:YES];
//[openPanel setAllowedFileTypes:[NSArray arrayWithObject:(NSString *)kUTTypeDirectory]];
[openPanel setAllowedFileTypes:@[@"mp3"]];//允许的类型
[openPanel setDirectoryURL:[NSURL fileURLWithPath:@"/Users/guodong/Desktop/song"]];//设置默认路径
[openPanel setAllowsMultipleSelection:YES];//允许按住shift/command多选
[openPanel runModal];//显示,并且返回结果 0取消了,1确认了
if ([openPanel runModal] == NSModalResponseOK) {
NSURL *url = [openPanel URL];
NSLog(@"%@",[openPanel filenames]);
}
#pragma mark 打开文件/文件夹的操作
[[NSWorkspace sharedWorkspace]openFile:@"/Users/guodong/Desktop/Tools"];//用默认的程序打开文件/文件夹
[[NSWorkspace sharedWorkspace]openFile:@"/Users/guodong/Desktop/首页 - 知乎.html" withApplication:@"Xcode"];//用指定的程序打开
//NSWorkspace可以做一些设计到其他App的操作,比如获取活动的app列表,隐藏其他app等
[[NSDocumentController
sharedDocumentController]openDocument:@"/Users/guodong/Desktop/Tools"];
//NSDocument应该是 苹果提供的网络同步功能用的 大概
#pragma mark NSTableView
//content Mode 这玩意在代码中好像没办法设置 设置Cell-Base/View-Base (必须设置)
//纯代码创建Cell-Base NSTableView
NSTableView *tableView;
tableView=[[NSTableView alloc]initWithFrame:CGRectMake(0, 0, 400, 300)];
tableView.delegate=nil;//代理
tableView.dataSource=nil;
//[tableView setAutosaveName:@"downloadTableView"];
//[tableView setAutoresizesSubviews:FULLSIZE];
//[tableView setBackgroundColor:[NSColor whiteColor]];
//[tableView setGridColor:[NSColor lightGrayColor]];
//[tableView setGridStyleMask: NSTableViewSolidHorizontalGridLineMask];
//[tableView setUsesAlternatingRowBackgroundColors:YES];
//[tableView setAutosaveTableColumns:YES];
//[tableView setAllowsEmptySelection:YES];
//[tableView setAllowsColumnSelection:YES];
NSScrollView *scrollView=[[NSScrollView alloc]initWithFrame:CGRectMake(0, 0, 400, 300)];
[scrollView setDocumentView:tableView];//设置内容视图
//[scrollView addSubview:tableView];虽然也能添加上,但是不能滑动什么的
//[scrollView setBackgroundColor:[NSColor redColor]];
[self.view addSubview:scrollView];
//设定表头
NSTableHeaderView *tableHeadView=[[NSTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, 300, 20)];
[tableView setHeaderView:tableHeadView];
//以前不知道的。。。设定列,可以设定几列,而且可调
NSTableColumn *column=[[NSTableColumn alloc] initWithIdentifier:@"column"];
[[column headerCell] setStringValue:@"column"];
//[[column headerCell] setAlignment:NSCenterTextAlignment];
[column setWidth:400];
[column setMinWidth:50];
[column setEditable:YES];
//[column setResizingMask:NSTableColumnAutoresizingMask | NSTableColumnUserResizingMask];
[tableView addTableColumn:column];
// Do any additional setup after loading the view.
/*创建Cell-Base NSTableView用的
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
return 100;
}
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
return @"ecwve";
}
*/
/*创建View-Base NSTableView用的,用代码可能不行。。。
-(CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
{
NSLog(@"eww");
return 100;
}
-(NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
NSView *cellView=[[NSView alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];
NSTextField *textField=[[NSTextField alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];
[textField.cell setTitle:@"wcvc"];
[cellView addSubview:textField];
return cellView;
}
*/
// Do any additional setup after loading the view.
}
-(void)click
{
NSLog(@"click");
}

- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];

// Update the view, if already loaded.
}

@end

热心网友 时间:2022-03-04 07:30

1.窗口和窗口的跳转,Mac开发下的window更像是iOS中的ViewController,窗口大小自己来定,而且转换窗口的办法要自己找合适的
2.常用控件,最恶心的莫过于NSCollectionView,跟UICollectionView根本就是两码事.这里值得一提的是,如果你是新手,用到Mac下的NSIndexPath很有可能会找不到row去哪了...当时气得我要死 总之你直接用.item就行了 具体用了你就知道了.其他控件多多少少都有不同,比如view是没有backgroundColor的,而且你会找不到label(去控件里找到label,看继承的类其实是NSTextField),所以如果想用纯代码初始化label就用textField代替… 说不完,真要学自己摸索吧
3.个人感觉Mac下的layout约束在ARC环境下会有内存泄露,总之我是能少用就少用了

iOS开发遇到不会的你甚至只用百度搜就基本都能解决
Mac开发遇到不会的你就算用Google也常常找到你想吐都找不到解决办法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 学习ios开发除了要苹果电脑外,还必需iphone手机吗?可以用ipad代替吗? 微信一直登不上去是什么原因 ios程序开发,需要什么样的苹果电脑配置?Mac air可以吗? 不是mac电脑可以开发ios吗 为什么微信一直登不上 ios应用是不是只能在xcode和mac环境下开发? 为什么我的微信登陆不上,一直都在进入 iOS 开发是否必须用苹果机? 使用cocos2d x开发ios 游戏 需要mac电脑吗 ios开发需要苹果电脑吗 学ios开发必须要有苹果电脑吗 iOS软件开发一定要在Mac上面做吗 零基础学做ios开发.需要买mac电脑吗?大概需要配置怎么样 ios软件开发一定需要苹果电脑吗? app开发是不是一定要用苹果电脑才可以 手机计算器没了,怎么找? oppo手机计算器不见了怎么恢复 为什么学习iOS开发一定要有Mac 学ios开发一定要有苹果手机和苹果电脑吗? 开发ios应用 是不是必须用苹果电脑 微信为什么登不上了,提示说操作频率过快,请稍后再试 做ios开发的以前都是从事什么工作 iOS开发工程师是做什么工作的 学ios开发,以后可以做什么工作? IOS 开发在工作上主要些做什么啊?,只是修改一下改代码就可以吗?还是整个程序代码多是自己敲出来的吗? 小米手机忘记密码怎么找回 IOS开发工资待遇怎样? 我小米账号忘记密码手机号qq邮箱都忘了怎么办 现在学ios开发以后,出来找工作怎么样 学ios开发有前途吗 小米手机忘记密码怎么(⊙_⊙?)找回 有没有搞IOS开发或软件开发的,你们的工作历程是怎么样的 ? 小米手机已锁忘记密码怎么找回? 听说iOS开发工程师工资很高,学习ios开发好找工作吗? 我的小米手机账号密码忘了,找不回来了,怎么人工申诉。 iOS开发中,CodeRunner是做什么用的? 2020年ios开发好找工作吗 一个资深的iOS开发者需要掌握哪些技能 我的小米手机账号密码丢失怎样找回 ios开发怎么那么多人,找工作好难