我有点顽固,但我想了解弱弱和强烈的参考,所以这就是为什么我再次问你.
考虑一下:
__weak NSString* mySecondPointer = myText;
NSLog(@"myText: %@", myText);
Run Code Online (Sandbox Code Playgroud)
结果是myText: (null)
非常明显的 - 弱引用在赋值后设置为null,因为没有对尖头对象的强引用.
但在这种情况下:
__strong NSString* strongPtr = [[NSString alloc] initWithFormat:@"mYTeSTteXt %d"];
// weak pointer points to the same object as strongPtr
__weak NSString* weakPtr = strongPtr;
if(strongPtr == weakPtr)
NSLog(@"They are pointing to the same obj");
NSLog(@"StrongPtr: %@", strongPtr);
NSLog(@"weakPtr: %@", weakPtr);
NSLog(@"Setting myText to different obj or nil");
// after line below, there is no strong referecene to the created object:
strongPtr = [[NSString alloc] …
Run Code Online (Sandbox Code Playgroud) weak-references reference-counting objective-c strong-references
这应该是微不足道的,但我似乎无法找到它(除非不存在这样的类!)
什么是智能指针的STL类(或类集)?
UPDATE
感谢您的回复,
我必须说我很惊讶没有标准的实施.
我最终使用了这个:http://archive.gamedev.net/reference/articles/article1060.asp
我有一个适用于Delphi和Lazarus的单元.在Lazarus中,该单元编译时没有任何异常,但在Delphi中它给出了错误数据类型太大:超过2 GB.以下是代码:
unit UType;
{$ifdef FPC}
{$MODE delphi}{$H+}
{$endif}
interface
type
TFreqType = Extended;
TFreqCutArray = Array [0..0]of TFreqType;
PFreqCutArray = ^TFreqCutArray;
FilterOrder = Integer;
TAS_Sample = Extended;
TAS_SampleArray = Array[0..High(Integer) div Sizeof(TAS_Sample) - 1] of TAS_Sample;
PTAS_SampleArray = ^TAS_SampleArray;
TAS_Float = Extended;
TComplex = record
Re, Im: TAS_Sample; // Z = Re + i*Im
end;
PComplex = ^TComplex;
TComplexArray = Array[0..High(Integer) div Sizeof(TComplex) - 1] of TComplex;//here Delphi gives the error
PComplexArray = ^TComplexArray;
FilterProc = function(V: TAS_Sample): TAS_Sample …
Run Code Online (Sandbox Code Playgroud) 以下行实际上做了什么?
string = @"Some text";
Run Code Online (Sandbox Code Playgroud)
假设在字段中声明了"string":
NSString *string;
Run Code Online (Sandbox Code Playgroud)
"="实际上在这里做了什么?它对"字符串"的引用计数有什么作用?特别是,假设由于某种原因"字符串"没有另外分配,是否需要释放?
谢谢!
cocoa reference-counting objective-c variable-assignment string-literals
如今,一个很简单的问题来到我的脑海里,当我不得不重写TObject
的BeforeConstruction
方法:
为什么TObject
方法AfterConstruction
和BeforeConstruction
有public
知名度?
我希望他们是protected
.他们不是的原因是什么?
我无法想象调用AfterConstruction
或BeforeConstruction
不调用该类的构造函数或析构函数的有效目的.你呢?
有一个DLL,由主(桌面)应用程序动态加载Windows.LoadLibrary
.那是因为有很多类似的DLL,并且只需要在运行时加载很少的单个DLL.因此静态链接不是一种选择.
问题是,在加载其中一个DLL时,主应用程序每隔一段时间就会挂起.请注意,问题很可能发生在每一个问题上.可能是因为他们有很多共同的代码库.
问题似乎是装载机锁定(请参阅此SO答案).我发现了一张共同的代码,即在所使用的由所有的DLL在启动时begin...end
所述的-section library
-单元(即project.dpr
),其中GetModuleHandle
和GetProcAddress
使用.
我发现,这是一个完全没有DLL的东西,因为begin...end
DLL的项目文件的部分实际上是库的DllMain
函数,并且调用这样的函数会导致死锁(命名加载器锁).我在本微软最佳实践指南中读到了这一点.
所以我重建了我的代码,这些调用稍后在调用Windows.LoadLibrary
完成后调用.
不幸的是,悬挂问题仍然存在.:-(
然后我运行调试器,逐步完成在执行一行代码之前调用的每个初始化.我确定,许多第三方代码违反了DLL初始化代码中要做什么和不做什么的指南:
所有上述动态加载其他DLL在initialization
代码或请求过程指针通过GetProcAddress
.我认为这些调用导致我的DLL加载时挂起.
是的,只有少数Delphi开发人员知道危险initialization
吗?我该怎么办?
我是气流新手并试图设置气流来运行ETL管道.我能够安装
我能够测试运行turtorial dag.当我尝试安排作业时,调度程序能够获取它并将我可以在UI上看到的作业排队,但任务没有运行.有人可以帮我解决这个问题吗?我相信我在这里缺少最基本的气流概念.下面是airflow.cfg
这是我的配置文件:
[core]
airflow_home = /root/airflow
dags_folder = /root/airflow/dags
base_log_folder = /root/airflow/logs
executor = CeleryExecutor
sql_alchemy_conn = postgresql+psycopg2://xxxx.amazonaws.com:5432/airflow
api_client = airflow.api.client.local_client
[webserver]
web_server_host = 0.0.0.0
web_server_port = 8080
web_server_worker_timeout = 120
worker_refresh_batch_size = 1
worker_refresh_interval = 30
[celery]
celery_app_name = airflow.executors.celery_executor
celeryd_concurrency = 16
worker_log_server_port = 8793
broker_url = amqp://rabbit:rabbit@x.x.x.x/rabbitmq_vhost
celery_result_backend = db+postgresql+psycopg2://postgres:airflow@xxx.amazonaws.com:5432/airflow
flower_host = 0.0.0.0
flower_port = 5555
default_queue = default
Run Code Online (Sandbox Code Playgroud)
DAG:这是我使用的教程dag
我的dag的开始日期是 - 'start_date':datetime(2017,4,11),
当通过OLE处理Office文档时,一位客户使用我们的软件会遇到一些奇怪的行为.当某个派生TOleContainer
类的实例尝试通过DoVerb(ovInPlaceActivate)
调用激活OLE对象时,代码崩溃.
有各种错误消息,包括:
看我的代码:
function TfrmOleOffice.SaveToStream: TStream;
var
LOleContainerState: TObjectState;
LModified: Boolean;
begin
Result := TMemoryStream.Create;
if IsEmpty and OleOfficeAvailable then exit;
if OleOfficeAvailable then
begin
LOleContainerStateBefore := FOleContainer.State;
LModified := FOleContainer.Modified; // 'FOleContainer.Modified' could be changed by 'FOleContainer.Close'
FOleContainer.Close;
FValue.Position := 0;
if LModified then // otherwise, take stored 'FValue' (see below)
FOleContainer.SaveToStream(FValue);
if LOleContainerStateBefore in [osUIActive] then
ActivateContainer; // reactivate the container
end;
Result.CopyFrom(FValue, 0);
end;
//---------------------------------------------------
procedure THKSOleContainer.SaveToStream(Stream: …
Run Code Online (Sandbox Code Playgroud) 这是设置:
我有两个视图在两个不同的vcl表单中实现.对于其中一个我应用了一种风格,使它看起来像一个触摸优化的地铁应用程序.可以根据应用程序的设置切换这些表单.(显示触摸优化视图开/关)
这工作得很好.我重写Application.MainForm
,旧表单关闭,新表单出现(并获得焦点).
我希望在Windows 10中实现自动化.作为附加视图模式,我提供了一个"自动检测"选项:
WM_SETTINGCHANGE
.这是通过在桌面模式和平板电脑模式之间切换发送的.HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell\TabletMode
这就是问题所在:
旧表单被销毁,弹出新表单并Application.MainForm
引用新表单.之后,平板电脑模式的开始屏幕弹出并显示在所有窗口的最顶部.因此,我的新触控优化形式在此屏幕后消失并失去焦点.如果我将视图固定到桌面视图并将窗口10切换到平板电脑模式,则不会出现此行为.在这种情况下,我的应用程序保持焦点并最大化自身(这样就不会创建任何形式).
到目前为止我尝试过的:
Application.MainForm.BringToFront
这不起作用.FormStyle := fsStayOnTop
(需要重点关注)和SetForeground(Application.MainForm.Handle)
来自WinAPI的调用.有任何想法吗?
我在Delphi XE4中遇到了一些奇怪的行为.
我不能set
在泛型类中声明一个类型,其中序数类型在同一个类中声明.
例如:
TTest<T> = class(TObject)
type
TEnumType = (eOne, eTwo, eThree);
TEnumTypes = set of TEnumType;
end;
Run Code Online (Sandbox Code Playgroud)
以上不编译.编译器发出错误" E2001:Ordinal type required ".
一个非泛型的类
TTest = class(TObject)
type
TEnumType = (eOne, eTwo, eThree);
TEnumTypes = set of TEnumType;
end;
Run Code Online (Sandbox Code Playgroud)
编译.
要使泛型类成功编译,必须在类外声明序数类型:
TEnumType = (eOne, eTwo, eThree);
TTest<T> = class(TObject)
type
TEnumTypes = set of TEnumType;
end;
Run Code Online (Sandbox Code Playgroud)
delphi ×6
delphi-xe4 ×2
objective-c ×2
airflow ×1
c++ ×1
celery ×1
cocoa ×1
dll ×1
excel ×1
excel-2010 ×1
forms ×1
freepascal ×1
generics ×1
lazarus ×1
ole ×1
postgresql ×1
rabbitmq ×1
stl ×1
tobject ×1
vcl ×1
vcl-styles ×1
windows-10 ×1