iPhone 突然发现,setting配置文件中的DefaultValue可能拿不了值

按照我的想法,如果用户没有在setting设置值且有default-value,那么应该获取的是default-value,因为打开setting也能看见这些值.但是今天突然发现好像不是那么会事.获取的是null.看了AppPrefs的代码,它也进行了判断.如下:

 

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
	[window addSubview:[navigationController view]];
	
	NSString *testValue = [[NSUserDefaults standardUserDefaults] stringForKey:kFirstNameKey];
	if (testValue == nil)
	{
		// no default values have been set, create them here based on what's in our Settings bundle info
		//
		NSString *pathStr = [[NSBundle mainBundle] bundlePath];
		NSString *settingsBundlePath = [pathStr stringByAppendingPathComponent:@"Settings.bundle"];
		NSString *finalPath = [settingsBundlePath stringByAppendingPathComponent:@"Root.plist"];

		NSDictionary *settingsDict = [NSDictionary dictionaryWithContentsOfFile:finalPath];
		NSArray *prefSpecifierArray = [settingsDict objectForKey:@"PreferenceSpecifiers"];

		NSString *firstNameDefault;
		NSString *lastNameDefault;
		NSNumber *nameColorDefault;
		NSNumber *backgroundColorDefault;
		
		NSDictionary *prefItem;
		for (prefItem in prefSpecifierArray)
		{
			NSString *keyValueStr = [prefItem objectForKey:@"Key"];
			id defaultValue = [prefItem objectForKey:@"DefaultValue"];
			
			if ([keyValueStr isEqualToString:kFirstNameKey])
			{
				firstNameDefault = defaultValue;
			}
			else if ([keyValueStr isEqualToString:kLastNameKey])
			{
				lastNameDefault = defaultValue;
			}
			else if ([keyValueStr isEqualToString:kNameColorKey])
			{
				nameColorDefault = defaultValue;
			}
			else if ([keyValueStr isEqualToString:kBackgroundColorKey])
			{
				backgroundColorDefault = defaultValue;
			}
		}

		// since no default values have been set (i.e. no preferences file created), create it here		
		NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
										firstNameDefault, kFirstNameKey,
										lastNameDefault, kLastNameKey,
										nameColorDefault, kNameColorKey,
										backgroundColorDefault, kBackgroundColorKey,
									  nil];
		[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
		[[NSUserDefaults standardUserDefaults] synchronize];
	}
	
	// we're ready to do, so lastly set the key preference values
	firstName = [[NSUserDefaults standardUserDefaults] stringForKey:kFirstNameKey];
	lastName = [[NSUserDefaults standardUserDefaults] stringForKey:kLastNameKey];
	textColor = [[NSUserDefaults standardUserDefaults] integerForKey:kNameColorKey];
	backgroundColor = [[NSUserDefaults standardUserDefaults] integerForKey:kBackgroundColorKey];
}

 

Unity项目CI/CD实战:基于Jenkins的自动化构建流水线搭建指南 持续集成与持续交付(CI/CD)是现代软件工程的核心实践,它通过自动化构建、测试和部署流程,将开发人员从重复性劳动中解放出来,显著提升团队协作效率和软件交付质量。其核心原理在于将代码变更快速、频繁地集成到主干,并通过自动化流水线确保每次集成的稳定性。对于资源密集、多平台适配复杂的游戏开发而言,CI/CD的技术价值尤为突出,它能有效解决手动打包效率低下、环境不一致、人为错误多等痛点。在Unity游戏开发中,结合Jenkins这一高度可定制的开源自动化服务器,可以构建一套覆盖代码提交、多平台编译、自动签名、产物 阅读详情

相关推荐

微信小程序自定义日期选择器组件:picker-view 实现 3 种联动与 2 种样式定制

本文详细介绍了如何在微信小程序中使用`picker-view`组件实现高度自定义的日期选择器,包括三种联动模式(年月日、年月、月日)和两种样式定制方案(底部弹窗式、内联嵌入式)。通过代码示例和优化技巧,帮助开发者解决官方`picker`组件在样式和交互上的限制,满足酒店预订、会员有效期选择等复杂业务场景需求。

weixin_30700977的博客 534

iOS解决NSUserDefaults存储失败问题

如果遇到NSUserDefaults存储失败问题,加上这行代码就OK了. 应该是它并不会立即存入沙盒,有延迟,如果立即打印可能或者取出,有时候就会取不出来 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults synchronize];// 强制立即存入沙盒

moses的博客 5115

URL是MVC的神经中枢:从路由设计到生产级实践

URL不仅是资源定位符,更是Web系统中控制流、数据流与用户体验流的核心契约。其本质是HTTP协议下路径、查询参数与请求体的职责划分机制,直接关联MVC架构中Controller的调度逻辑、Model的数据边界和View的渲染上下文。遵循RESTful语义可实现天然解耦,而路径参数、查询参数与请求体的合理使用,决定了缓存策略、SEO效果、安全防护与监控粒度。现代框架如Spring Boot、Express及Vue Router均围绕URL构建路由匹配引擎(如Trie树)与解析规范(如多层解码),使其成为可观

diedangxiang4092的博客 486

Xcode12打包后iOS11及以下系统NSUserDefaults数据会丢失(包括解决办法)

测试代码 [[NSUserDefaults standardUserDefaults] setObject:@"NOyyy" forKey:@"firstToyyy"]; [[NSUserDefaults standardUserDefaults] synchronize]; NSString *text =[[NSUserDefaults standardUserDefaults] objectForKey:@"firstToyy...

qq_15509071的博客 1566

Spring MVC @RequestMapping 深度解析:从路径映射到生产避坑

@RequestMapping 是 Spring MVC 请求分发的核心机制,其本质是 DispatcherServlet 对 URL 路径、HTTP 方法、请求头与查询参数的多维匹配引擎。它基于类级与方法级映射的树状组合实现 API 版本管理与模块隔离,通过 headers 和 params 属性支持内容协商与请求分流,并与 @PathVariable、@RequestParam 共同构成参数绑定体系。该机制直接影响接口健壮性、可维护性与灰度发布能力,在金融、IoT、电商等高要求场景中尤为关键。本文聚焦真

Eric.Net的专栏 423

Elasticsearch、Solr、MeiliSearch与PostgreSQL全文搜索实战对比与避坑指南

全文搜索是处理海量文本数据、实现高效模糊匹配和相关性排序的核心技术,其底层依赖于倒排索引机制。该机制通过建立词条到文档的映射,相比传统数据库的LIKE查询,能实现毫秒级检索响应。这项技术为现代应用提供了从电商商品搜索、内容平台推荐到日志分析等场景的关键支撑。在实际工程实践中,开发者常面临在Elasticsearch、Solr、MeiliSearch及数据库内置方案间的选型困惑。本文聚焦于倒排索引与中文分词等核心热词,通过对比这四种主流方案在Docker环境下的配置、API集成及生产级优化策略,旨在为面临搜索

weixin_33885676的博客 420

NSUserDefaults 的坑知道吗?

这几天,恰好用到一个NSUserDefaults 保存少量数据,但是这个方法有点恶心,如果不留心很有可能存在坑。这个方法,简单方便,具体的优点我不说了,可以查阅苹果对NSUserDefaults的介绍。 先说下NSUserDefaults 的用法: iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData几种常用的方式来存储数据,其中N

Dwyane_Coding 3886

基于python+mediapipe的手势拖动识别(无gpu)

手势点方块拖动

weixin_38029956的博客 5982

【已解决】NSUserDefaults偶尔/有时候保存数据会失败/失效

【已解决】NSUserDefaults偶尔/有时候保存数据会失败/失效 2012 年 9 月 12 日 下午 3:34 crifan 已有687人围观 我来说几句 【问题】 之前已经实现了通过NSUserDefaults去保存用户数据: 【已解决】iPhone/iOS中保存自定义对象(Custom Object/Custom Class...

张明炜 841

手把手教你用Arduino和开源电路DIY一个手机连接的电化学传感器(附GitHub源码)

本文详细介绍了如何利用Arduino和开源电路DIY一个手机连接的电化学传感器,成本不到300元即可复现价值数千元的专业设备。从硬件选型、电路搭建到固件开发和手机应用实现,手把手教你完成整个项目,特别适合科研人员、环境监测爱好者和理工科学生。附GitHub源码,方便快速上手和扩展功能。

weixin_42561040的博客 336

《计算机科学概论(第13版)》5-12章

定序是按给定语句的顺序应用每个算法步骤。(primitive):建立一组定义明确的构建块,利用它们来构造和执行算法的表示。可以消除歧义,不会引起误解,就像咱们传统的自然语言(用英语来沟通交流)。(programming language):原语的集合以及说明如何组合这些原语来表示比较复杂的想法的规则集合。用程序设计语言描述的算法可以在计算机上执行。每个原语都有自己的语法和语义,语法指的是原语的符号表示,语义是指该原语的含义。伪代码:用户开发过程中非正式表达想法的符号系统。

输入知识,消化知识,输出知识,分享知识,教人让我学习更好,业精于勤荒于嬉,行成于思毁于随 1036

Settings.bundle的DefaultValue不起作用?(NSUserDefaults)

第一次需要用iPhone系统配置,发现Settings.bundle/Rool.plist中的DefaultValue不起作用。返回是nil。Google了下,NSUserDefaults确实没有提供现成的方法去让DefaultValue生效。解决办法如下: 在程序的- (BOOL)application:(UIApplication *)application didFinishLa...

weixin_30929295的博客 192

如何设计ADAS系统功能状态机(一)

状态机模块在自动驾驶系统中扮演着关键的角色,它负责管理和控制各个功能的状态转换和行为执行。今天我们来聊聊如何设计自动驾驶系统的状态机。

supass2018的博客 1615

defaultvalue默认显示 请选择_请跟我一起来体验沃尔沃Carplay系统!

听闻IOS13的carplay系统有很大的改变,迫不及待拿出压箱底的iphone来试试。将iPhone与数据线连接(建议使用原装数据线),并把数据线插在中央扶手箱内带白色边框的USB接口上,出现这个提示,选择:是。连接成功,出现这个画面,我们可以看到一些常用的APP。我只安装了百度地图、QQ音乐和高德地图,Carplay的导航便捷性和QQ音乐的显示效果是我很喜欢的。QQ音乐内可选...

weixin_34539644的博客 1304

VsCode+JLink+GCC替代Keil开发GD32程序-个人总结

对个人使用vscode+Jlink开发GD32程序做了总结,供需要者参考。

MyCollege1999的博客 2763

SAP ABAP 实用小技巧合集 (一)

本合集包含了笔者从事 ABAP 开发 17 年以来积累的小技巧。持续更新。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3221

react native ios 系统输入法不能输入中文的解决办法

点这里,这篇文章写的不错,我就是记录一下 class MyTextInput extends Component { shouldComponentUpdate(nextProps){ return Platform.OS !== 'ios' || (this.props.value === nextProps.value && ...

weixin_30508309的博客 266

02 HCM CPI SF集成-组织集成(一)

将员工主数据和组织数据从SAP Successfactors Employee CentraI复制到SAPERP或SAP S/4HANA,SAP SF CPI HCM集成

SAP CPI 129

Altair 数据转换(Data Transformations)完整指南:19 种 transform_* 方法与 transformed_data 原理

Altair 是一套声明式 Python 可视化库,其数据转换体系让开发者既可以在图表定义前用 pandas 预处理数据,也可以直接在图表规格(spec)内部通过顶层对象的 `transform_*` 方法描述转换逻辑,由 Vega-Lite/Vega 引擎在浏览器端或 Python 内核中执行。本文以 [doc/user_guide/transform/index.rst](https://li

gitblog_00215的博客 427

NX二次开发(Python)-UIStyler-选择体和按钮操作

用UG NX的UIStyler块界面编辑器,生成带有“选择体”和“按钮”操作的一个界面,如下图所示:

GimiGimmy 2311

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

LangGraph自定义工具进阶:用 Pydantic Schema 让 LLM 精准调用工具

本文介绍如何用 Pydantic Schema 定义复杂工具参数,让 LLM 在调用工具时更准确、更安全。通过 BaseModel、Field、Literal 和嵌套对象,可以把数量范围、枚举值、默认值、地址结构等约束前置到工具定义中。这样一方面能让 LLM 根据 Schema 生成更规范的参数,另一方面也能在工具执行前自动校验非法输入,避免脏数据进入业务系统。文章还结合订单创建、天气查询和数据库查询示例,讲解了 Schema 定义方式、运行效果、常见坑和生产级实践。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Session级个性化:轻量工程化实现用户实时感知

Session级个性化是一种聚焦单次会话(通常15分钟至2小时)的轻量级用户感知技术,其核心在于不依赖长期用户画像或复杂流式计算,而是通过分层上下文(静态/行为/意图)在边缘、网关与服务端协同完成毫秒级响应。它基于现代Web架构特性(如CDN边缘计算、API网关Lua脚本、前端sendBeacon),以低延迟、零持久化、强隐私合规为设计前提,显著提升电商转化率、SaaS留存与内容阅读时长。本文详解如何用Cloudflare Workers、Kong插件与Spring Boot,构建可落地的session-l

weixin_30540691的博客 409

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Unity多渠道多环境自动化打包:Jenkins流水线与配置模板实战

在软件工程领域,持续集成与持续交付(CI/CD)是提升团队协作效率和软件交付质量的核心实践。其基本原理是通过自动化工具链,将代码的构建、测试、打包和部署等环节串联起来,实现快速、可靠且可重复的发布流程。对于Unity移动游戏开发而言,这一技术的价值尤为突出,它能有效解决多平台(如iOS、Android)、多渠道(如应用宝、华为)和多环境(开发、测试、生产)带来的配置管理与打包复杂度问题。通过将可变因素(如渠道标识、API地址、版本号)参数化,并与构建脚本(如Jenkins Pipeline)和配置注入机制结

weixin_33834628的博客 497

你的Swagger文档够专业吗?用Knife4j这5个高级注解,让前后端联调效率翻倍

本文介绍了如何使用Knife4j的5个高级注解提升Swagger文档的专业性,包括@ApiImplicitParams构建清晰参数说明、@ApiModelProperty的example属性提供真实示例、接口分组与排序优化文档流、离线文档导出增强协作以及接口调试功能提升联调效率。这些技巧能显著减少前后端沟通成本,提升开发效率。

程涛 473

Swift-Sharing扩展库生态:SharingGRDB、SharingCloud等配套工具全解析

Swift-Sharing是一个功能强大的通用数据持久化与共享解决方案,通过极少的代码即可实现复杂的数据管理需求。本文将深入解析其生态系统中的核心配套工具,包括SharingGRDB、SharingCloud等,帮助开发者快速掌握这些工具的使用方法与优势。 ## 什么是Swift-Sharing生态系统? Swift-Sharing生态系统由主库和多个社区支持的扩展库组成,旨在为Swift开发

gitblog_00348的博客 1086
上一篇: iPhone3开发基础教程中部分有用代码片段(1)
下一篇: (转)为什么大家觉得Symbian开发比较难?
xinlanzero
博客等级 码龄25年 10粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值