我正在阅读苹果关于内存管理的文档,当我开始自动发布池块时,有些东西让我思考.
Any object sent an autorelease message inside the autorelease pool block is
released at the end of the block.
Run Code Online (Sandbox Code Playgroud)
我不确定我是否完全理解这一点.在自动释放池块中创建的任何对象无论如何都会在块的末尾释放,因为这是它的生命周期.为什么当它到达块的末尾时无论如何都要释放它时,你需要调用autorelease?
为了更清楚,我将举例说明我的想法:
@autoreleasepool {
MyObject *obj = [[MyObject alloc] init]; // no autorelease call here
/* use the object*/
//....
// in the end it should get deallocated because it's lifespan ends, right?
// so why do we need to call autorelease then?!
}
Run Code Online (Sandbox Code Playgroud)
PS:请不要告诉我,因为ARC我们不需要做一些事情,因为ARC会照顾它们.我完全清楚这一点,但我想暂时将ARC放在一边,以了解内存管理的机制.
memory-management autorelease nsautoreleasepool ios objective-c-blocks
我想使用JavaScript在双引号之间获取文本.我在网上找到了类似title.match(/".*?"/);的东西,但有时我的双引号之间有文字,但有时候没有引号.我所说的是,有时我收到的字符串如下:Neque porro quisquam est qui dolorem ipsum有时字符串如下:Neque "porro quisquam est" qui dolorem ipsum.问题是,当我有包含双引号的文本时,我想要检索它们之间的文本,但是当它们不存在时,我想要整个文本.此外,我观察到string.indexOf("\"")这不起作用,我真的不知道如何处理这个问题.谢谢.
如何动态设置重力?
Bitmap bmp;
im = new ImageView (this);
bmp=getbmp(img);
im.setImageBitmap(bmp);
Run Code Online (Sandbox Code Playgroud)
现在我想将图像放在顶部.我可以android:gravity在main.xml中执行此操作吗?
编辑:
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:scrollbars="vertical"
>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我有一个框架布局,我添加了图像,然后文本,我希望图像在屏幕的顶部.
FrameLayout fm = new FrameLayout (this);
fm.addView(im);
fm.addView(fin); // fin = the text view
setContentView(fm);
Run Code Online (Sandbox Code Playgroud) 我试图通过在我的应用程序中使用twitter阅读来获取用户的联系方式.我在github上发现这个项目看起来真的很棒.我只遇到一个问题.如果我使用来自Twitter的新应用消费者密钥和消费者密钥代码运行它会给我一个错误:
Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)" UserInfo=0x6898e80 {NSErrorFailingURLKey=https://api.twitter.com/oauth/request_token, NSErrorFailingURLStringKey=https://api.twitter.com/oauth/request_token, NSUnderlyingError=0x68980e0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1012.)"}
Run Code Online (Sandbox Code Playgroud)
控制台中的输出是:
2013-01-16 17:55:24.367 DMTwitterOAuth[3411:c07] current status = Prompt for user data and request token to server
2013-01-16 17:55:24.371 DMTwitterOAuth[3411:c07] current status = Requesting token for current user's auth data...
2013-01-16 17:55:25.433 DMTwitterOAuth[3411:c07] current status = Token received from server
Run Code Online (Sandbox Code Playgroud)
在我得到警报视图后,它立即说它遇到了一个NSURLErrorDomain.
另一方面,如果我使用来自另一个Twitter应用程序的其他代码运行它,它会工作,向我提供有关用户的所有详细信息.我只是无法理解为什么它可以使用某些键,而对于其他键则不然.
我的应用程序从互联网上获取一些HTML代码,完成后,将其显示在设备屏幕上.由于这需要大约3-4秒,因此在这段时间屏幕保持黑色,我想使用进度对话框.这是我的代码:
package com.nextlogic.golfnews;
// ALL THE IMPORTS ....
public class Activity1 extends Activity {
private ProgressDialog progressDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
progressDialog = ProgressDialog.show(Activity1.this, "", "Loading...");
new Thread()
{
public void run()
{
try
{
sleep(2000);
// HERE I'VE PUT ALL THE FUNCTIONS THAT WORK FOR ME
}
catch (Exception e)
{
Log.e("tag",e.getMessage());
}
// dismiss the progressdialog
progressDialog.dismiss();
}
}.start();
Run Code Online (Sandbox Code Playgroud)
该程序有效但不再显示任何内容.我在logcat中有一个错误:
Only the original thread that created a view hierarchy can touch its views.
Run Code Online (Sandbox Code Playgroud)
请你帮助我好吗 …
假设我们有一个person类型的对象,它有一个名为name的属性.
Person *p;
[p setValue:@"John" forKey:@"name"];
Run Code Online (Sandbox Code Playgroud)
这很好用.我想要做的是深入挖掘.假设类人员有另一个名为address的属性,该属性是Address类,并且有一个名为zipcode的字段.
是否有一种更简单的方法来分配这个人的邮政编码?也许更清洁,更清晰的东西?
[[p valueForKey:@"address"] setValue:@"234567" forKey:@"zipcode"];
Run Code Online (Sandbox Code Playgroud) 我开发了一个应用程序,它从互联网上获取内容,并在设备的屏幕上显示相应的内容.该程序工作得很好,有点慢.加载和显示内容大约需要3-4秒.我想把所有获取内容的代码放在后台线程中,当程序执行这些功能时,我想显示一个进度对话框.你能帮帮我吗?我想特别学习如何将代码放在后台线程中.
我的代码
public class Activity1 extends Activity
{
private ProgressDialog progressDialog;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new AsyncTask<Integer, Integer, Boolean>()
{
ProgressDialog progressDialog;
@Override
protected void onPreExecute()
{
/*
* This is executed on UI thread before doInBackground(). It is
* the perfect place to show the progress dialog.
*/
progressDialog = ProgressDialog.show(Activity1.this, "",
"Loading...");
}
@Override
protected Boolean doInBackground(Integer... params)
{
if (params == null)
{
return false;
}
try
{
/*
* This is run …Run Code Online (Sandbox Code Playgroud) 我想在推送另一个视图控制器时更改导航视图控制器的"从右向左滑动"转换.我在故事板中找到了一个选项,但它似乎不起作用.过渡风格仍然相同.通过单击故事板中的目标视图控制器,我发现了这一点,虽然它看起来像是模式样式segue的过渡:

所以,我的问题是,是否有可能使推送样式segue过渡看起来不同?如果是这样,怎么样?
我想在IAR Embedded Workbench中创建一个简单的库(C/ANSI),然后在另一个项目中使用该库.我在他们的网站上找到了一些文档.虽然我不完全理解它,但我设法让自己成为一个.r90文件,据我所知,这将是图书馆.请注意,我是这个领域的初学者.总之,我想逐步介绍如何创建库,然后如何在另一个项目中导入它.谢谢.
PS:我正在使用IAR Embedded Workbench for AVR,这个版本没有下面的Library选项卡Linker.
在我的适用于iOS 5和6的应用程序中,我有一个if声明:
NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:sourcePath];
if ([inputStream streamStatus] == NSStreamEventErrorOccurred){
[...]
}
Run Code Online (Sandbox Code Playgroud)
在iOS 7上,我收到以下警告:
Comparison of constant 'NSStreamEventErrorOccurred' with expression of type
'NSStreamStatus' (aka 'enum NSStreamStatus') is always false
Run Code Online (Sandbox Code Playgroud)
关于iOS 7关于NSInputstream课程的变化的任何想法?我想知道为什么我现在在iOS7上收到此警告.
ios ×5
android ×3
ansi ×1
autorelease ×1
background ×1
c ×1
coding-style ×1
comparison ×1
dialog ×1
embedded ×1
gravity ×1
iar ×1
image ×1
javascript ×1
key-value ×1
kvc ×1
navigation ×1
nsurlrequest ×1
objective-c ×1
progress ×1
regex ×1
styles ×1
substring ×1
text ×1
transition ×1
twitter ×1
view ×1
workbench ×1